誰かが私のコードをレビューすることができます、私はより良い解決策かどんなバグでも知る必要があります。
オーケー! 、パラメータで検索結果を取得し、タイトル、コンテンツ、タグで検索するためのPHPファイルを作成した
PHPの頭はこんな感じです:
include('../../../../wp-config.php');
header('Content-type:text/html;charset=utf-8');
$keyword = $_GET['k'];
あとでjQueryで検索結果を持っていくこと。
データベースからの結果を表示するための私の主な検索機能:
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>';
}
}
}
タイトル機能で検索:フルキーワード(例: "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'");
だから私は次のステップのようにキーワードを分割:
$keywords_split = explode(" ",$keyword);
タイトル機能で検索:マルチキーワード(例: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]'");
}
コンテンツ検索機能:(上記と同じですが、コンテンツ検索)
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)");
}
近いmysqlより
mysql_close();
タグ機能で検索:(通常のワードプレスクエリを使用)
$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;
すべてがうまくいったので、自分のコードを見直したり、もっと良いことを言ったりする必要があります。
ここに完全なコード: http://snipt.org/zpz0
ありがとう
WordPressでの検索は、以下の理由で複雑な問題です。
最初から検索を構築することが関係し(私はクライアントのためにしばらくの間正確にそれをしたので知っています)、あなたは完全に最初に検索プラグインまたは他の妥協点を探すべきです。
コードに関する特定の問題を簡単に列挙するには
query_posts()
は使用すべきではありません。 を参照してください。いつWP_Queryとquery_posts()とget_posts()の組み合わせを使用する必要がありますか?