• 解決済 JunichiK

    (@junichik)


    いつもお世話になります。

    ある値をカスタムフィールドの値に持つページの有無を判定したいのですが、そのようなことは可能なのでしょうか?
    現在はカスタムフィールドを検索対象に出来るプラグイン「Search Everything」を使用して、tableの中で下記のようにそれぞれ検索をかけるようにしています。

    $url = home_url('/?s=値A');
    echo "<td><a href=\"".$url."\">検索</a></td>";

    これを、検索をかける前にページの有無判定をして、下記のような形になるのが理想です。

    $url = home_url('/?s=値A');
    if( カスタムフィールドに値Aを持つページ有無の判定 ){
     echo "<td><a href=\"".$url."\">検索</a></td>"; //ある場合
    } else {
     echo "ページはありません"; //無い場合
    }

    このようなことは可能なのでしょうか?
    不可能であれば、不可能であるというご回答で納得いたしますので、何卒よろしくお願いいたします。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • hide

    (@hideokamoto)

    if( get_post_meta($post_id, カスタムフィールドのキー) === "値A" ) {

    のような条件分岐でいかがでしょうか?

    get_post_meta関数を使用することでカスタムフィールドの値を取得できますので、

    そこで取得した値が値Aかどうかを判定させています。

    詳細はhttp://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/get_post_metaをご覧ください。

    get_posts 関数に「カスタムフィールドAが値Bである」という検索条件するパラメータを与えて呼び出します。get_posts の戻り値は配列なので、配列の要素が幾つあるか数えます(エラーチェックも必要と思いますが)。要素が1つ以上あれば「値BをカスタムフィールドAに持つ投稿」があると判断できます。

    投稿ではなく固定ページの場合は get_pages 関数が使えると思います。

    どちらの場合もパラメータは meta_key や meta_value を使って指定します。Codexの WP_Query の説明ページに「カスタムフィールドパラメータ」という章があって参考になります。

    トピック投稿者 JunichiK

    (@junichik)

    gblsmさん、hideokamotoさん、ありがとうございます。
    gblsmさんの方法でうまくいきました。いつもありがとうございます。
    配列の要素の数は数えずに、empty関数だけを使用しました。

    $url = home_url('/?s=値B');
    $args = array(
     'meta_key' => 'カスタムフィールドA',
     'meta_value' => '値B'
    );
    $posts_array = get_posts( $args );
    if (!empty($posts_array)){
     echo "<a href=\"".$url."\">検索</a>";
    } else {
    echo "ページはありません";
    }

    hideokamotoさんの get_post_meta関数は、今回の場合では取得できませんでしたが、ありがとうございました。

3件の返信を表示中 - 1 - 3件目 (全3件中)
  • トピック「カスタムフィールドに値を持つページの存在の有無を判定したい」には新たに返信することはできません。