サポート » 使い方全般 » WordPressのサイト内検索機能で特定のカスタム フィールドを検索対象から除

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • モデレーター gatespace

    (@gatespace)

    ちょっと検証していないのですが、考え方だけ。

    WordPress 3.1以降であればWP Queryで meta_query というのが使えるのでそれで制御できると思います。
    http://codex.wordpress.org/Function_Reference/WP_Query#Custom_Field_Parameters

    以前、フォーラムに似たような投稿がありましたので、そちらもご覧ください
    http://ja.forums.wordpress.org/topic/10582?replies=5

    あと、user_levelは3.0から非推奨になっているので、
    is_user_logged_in を使った方が良いかと

    トピック投稿者 Kohsuke Hada

    (@wingfield)

    gatespaceさん
    ご回答ありがとうございます。meta_queryでそれっぽい条件を作って$query->setに入れてみたのですが、設定が悪かったのか期待通りに動かせてません。参考のURLを元にもう少し調べてみます。

    また、user_levelが非推奨になったのは存じてなかったのですが、実際はログイン・未ログインだけではなく、会員レベルに応じて数段階出力するHTMLを切り替えている制御が必用で、これを使用しています。

    モデレーター gatespace

    (@gatespace)

    考え方の提示のみでごめんなさい。

    また、user_levelが非推奨になったのは存じてなかったのですが、実際はログイン・未ログインだけではなく、会員レベルに応じて数段階出力するHTMLを切り替えている制御が必用で、これを使用しています。

    会員レベルというのがWordPressの権限グループに当たるのであれば、current_user_can という関数が使えます。

    自分のブログで恐縮ですが、以前「WordPressでユーザー情報で条件分岐」をいう記事を書いたので、ご覧いただければと思います。
    http://gatespace.wordpress.com/2012/10/23/wp-user-info-conditional/

    meta_queryでそれっぽい条件を作って$query->setに入れてみたのですが、設定が悪かったのか期待通りに動かせてません。

    具体的にコードを提示してもらえれば、分かる人が回答できると思いますよ。

    トピック投稿者 Kohsuke Hada

    (@wingfield)

    gatespace さん
    アドバイスありがとうございます。グローバル変数ではなく関数で取得するのが作法なのですね

    以前書いてみたコードです。特定のフィールド名で検索文字を like で探したらどうかと考えてみました。このタイミングでカスタム フィールドの値を検索条件でさらに絞っても良いのか疑問に思いながら書いてみましたが、はやり期待通りには動作しませんでした。

    functionSearchFilter($query) {
      if ($query->is_search) {
        $query->set( 'meta_query', array(
                                       array(
                                             'key' => '<フィールド名>',
                                             'value' => $query,
                                             'compare' => 'LIKE'
                                            )
                                       )
                                  );
      }
    }
    add_filter('pre_get_posts',"functionSearchFilter")

    そもそも、一旦すべて検索で取得しておいて、そこから検索キーワードがカスタム フィールドの値によって一致した場合は除外、としたいので、このコードは見当違いだったと思います。

    トピック投稿者 Kohsuke Hada

    (@wingfield)

    本件、カスタム フィールドではなく、別のカスタム投稿タイプでコンテンツを作成することにしました。

    ご回答いただいた皆様ありがとうございました。

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「WordPressのサイト内検索機能で特定のカスタム フィールドを検索対象から除」には新たに返信することはできません。