web-dev-qa-db-ja.com

カスタム投稿タイプとカスタムフィールドWP_Query

私は、青少年サッカー(サッカー)クラブであるクライアントのためのサイトを開発しています。子供たちの能力や年齢に応じてさまざまなチームがあります。各チームのマネージャーが自分のチームが関与している最新の試合について投稿して投稿できるように、Match Reportsというカスタム投稿タイプを追加しました。

WPの標準投稿部分を使ったニュースセクションもあります。ホームページにニュースを表示するショートコードを書きました。できることは、Advanced Custom Fieldsプラグインを使用してオプションを選択し、一致レポートの1つをホームページに追加できるシステムを有効にすることです。これはtrue/falseの2つのオプションのラジオボタンフォームです。値 - ホームページに表示しますか?はい・いいえ。

私のニュースのショートコードには、Match Reportsのカスタム投稿タイプを追加しました。これは完璧に機能しますが、[ホームページに表示 - はい]ラジオボタンを選択してレポートを表示する方法がわかりません。これが私のクエリパラメータです。

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_key" => "show_in_news",
    "meta_value" => "true"
);

これの問題は、標準投稿にはカスタムフィールドがないため、一致レポートのみが表示され、カスタムフィールドクエリを削除すると、すべての一致レポートが投稿と共に表示されることです。マッチレポートをshow_in_news(アドバンストカスタムフィールドで作成されたラジオボタン付きのカスタムフィールドと、すべての投稿と一緒にtrueの値で)表示するだけです。

誰かが私を手伝ってくれる?もしそうなら:)どうもありがとう

1
Tom Oakley

現在あなたのメタクエリは排他的であり、あなたはそれを包括的にする必要があります。たとえば、値がfalseであっても、match-reportカスタム投稿タイプのメタフィールドshow_in_newsを常に保存することができます。カスタムのshow_in_newsが存在しない場合(標準の投稿)、またはカスタムの投稿タイプが"true"である場合は、投稿を含めることができます。

$queryArgs = array(
    "post_type" => array( "post", "match-report" ),
    "meta_query" => array( 
        "relation" => "OR",
        array(
            "key" => "show_in_news",
            "compare" => "NOT EXISTS",
        ),
        array(
            "key"   => "show_in_news",
            "value" => "true",
        ),
    ),
);

これで仕事ができます。

1
cybmeta