web-dev-qa-db-ja.com

すべてを検索(投稿、ページ、タグ、cpt、メタ)

私のサイトのすべてのコンテンツから結果を返すための組み込みのワードプレス検索の使い方を知りたいのですが。具体的には、検索したいです。

  • 投稿
  • ページ数
  • タグ
  • カスタム投稿タイプ(ポートフォリオ)
  • カスタム投稿タイプで使用されるカスタム分類法(スキル、クライアント)
  • カスタム投稿タイプで使用されるメタボックス(portfolio_caption、portfolio_excerpt、portfolio_credits、portfolio_links)

1つの検索フォームが欲しいのですが、検索を特定の投稿タイプやカテゴリに限定する必要はありません。ただ検索語を入力してください>検索をクリックしてください>私のサイト上のすべてのコンテンツからの一致を見ます。単純な;)

更新:できれば、プラグインを使用するのではなく、機能またはカスタムデータベースクエリを使用してこれを実現します。これは、私がテーマを開発していて、ユーザーにプラグインのダウンロードを要求するのではなく、この機能をそのまま使用できるようにするためです。 (タイトル変更)

3
robflate

- DeluxeBlogTips.com 1) 投稿とメタデータの両方で複合検索を行う方法についての記事があります。基本的に、それは$ wpdbオブジェクトを介した2つの問い合わせを含みます。 1つはメタテーブルを検索してpost_idsのリストを取得し、もう1つは投稿のクエリでpost_idsを取得します。次に配列をマージし、それを使用して、WP_Query引数を使用してposts__inでクエリを実行します。

1.タグは投稿をグループ化するためのもので、2.タグと分類法には3つの異なるテーブルが含まれるものであるため、タグの使用は少し複雑になる場合があります。

1)リンクされた記事は完全には正しくありません。それは$keyword = "%".like_escape( $keyword )."%";であるべきです。

2
Manny Fleurmond

@Wyckが投稿したリンクを使用して、 http://wordpress.org/extend/plugins/search-everything/ をチェックしてください。タスクが複雑であることを考えると、プラグインは本当に最善の方法です。

0
Matthew Boynes

本当にプラグインに反対していて、SQLを知っているなら、 $ wpdbグローバル変数 を使ってこれを行うことができます。

たとえば、タイトルに "sample_text"を含むすべての投稿をクエリするには、次のようにします。

global $wpdb;    
$post = $wpdb->get_results("SELECT * FROM $wpdb->wp_posts WHERE post_title LIKE '%sample_text%' ");

その後、他の各テーブルについても同様のことをします。

0
karllhughes