web-dev-qa-db-ja.com

カスタム検索ページとタイトル、コンテンツ、タグによる検索

誰かが私のコードをレビューすることができます、私はより良い解決策かどんなバグでも知る必要があります。

オーケー! 、パラメータで検索結果を取得し、タイトル、コンテンツ、タグで検索するための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

ありがとう

1
l2aelba

WordPressでの検索は、以下の理由で複雑な問題です。

  1. WPはそのままではうまくいかない
  2. 検索がどの程度正確に機能するかについて、人々はさまざまな期待を寄せている傾向があります。
  3. (人間の観点から)軽い検索要求でさえ、複雑で複雑なコードに変換される傾向があります。

最初から検索を構築することが関係し(私はクライアントのためにしばらくの間正確にそれをしたので知っています)、あなたは完全に最初に検索プラグインまたは他の妥協点を探すべきです。

コードに関する特定の問題を簡単に列挙するには

3
Rarst