Quelqu'un peut-il réviser mon code, j'ai besoin de connaître de meilleures solutions ou n'importe quel bogue.
Okey! , J’ai créé un fichier PHP pour obtenir les résultats de la recherche par paramètres et par titre, contenu et balise
La tête de PHP ressemble à:
include('../../../../wp-config.php');
header('Content-type:text/html;charset=utf-8');
$keyword = $_GET['k'];
Que j’apporterai les résultats de recherche par jQuery après.
Ma fonction de recherche principale pour afficher le résultat de la base de données:
function search($keyword,$mark){
while($data=mysql_fetch_array($keyword)){
if($data['post_status']=='publish'){
echo '<li>#'.$data['ID'].' '.htmlentities($data['post_title']).' ('.$mark.')</li>';
}
}
}
Recherche par fonction de titre: Mot-clé complet (ex: "Jack Daniels")
$sql_full_keyword = "SELECT * from wp_posts WHERE post_title LIKE '$keyword%'";
$search_full_keyword = mysql_query($sql_full_keyword) or die(mysql_error());
search($search_full_keyword,"Full keyword(s) = '$keyword'");
Donc, j'ai divisé le mot clé pour les prochaines étapes comme:
$keywords_split = explode(" ",$keyword);
Recherche par fonction de titre: mots-clés multiples (ex: jack + daniels)
for($i=0;$i<count($keywords_split);$i++){
$sql_split_keyword = "SELECT * from wp_posts WHERE post_title LIKE '$keywords_split[$i]%'";
$search_split_keyword = mysql_query($sql_split_keyword) or die(mysql_error());
search($search_split_keyword,"Split keyword = '$keywords_split[$i]'");
}
Fonction de recherche par contenu: (idem ci-dessus, mais recherche par contenu)
for($i=0;$i<count($keywords_split);$i++){
$sql_split_keyword = "SELECT * from wp_posts WHERE post_content LIKE '$keywords_split[$i]%'";
$search_split_keyword = mysql_query($sql_split_keyword) or die(mysql_error());
search($search_split_keyword,"Split keyword = '$keywords_split[$i]' (Content)");
}
Que fermer mysql
mysql_close();
Fonction de recherche par balise: (en utilisant une requête wordpress normale)
$tags = str_replace(" ","-",$keyword).",".str_replace(" ",",",$keyword);
query_posts(array('post_type'=>array('one','two','three') ,'tag' => $tags,'posts_per_page'=>-1));
while (have_posts()):the_post();
echo '<li>#'.get_the_ID().' '.get_the_title().'</li>';
endwhile;
Tout fonctionne maintenant et j'ai besoin de quelqu'un pour réviser mon code, me dire de meilleures choses ou tong ...
Code complet ici: http://snipt.org/zpz0
Merci
La recherche dans WordPress est compliquée car:
Construire la recherche à partir de zéro est impliqué (je sais parce que je l'ai fait exactement pendant un certain temps pour les clients) et vous devez tout d'abord rechercher des plugins de recherche ou d'autres compromis (comme une recherche en tant que service).
Pour énumérer brièvement des problèmes spécifiques liés à votre code:
query_posts()
ne doit pas être utilisé, voir Quand faut-il utiliser WP_Query vs query_posts () vs get_posts ()?