サポート » 使い方全般 » date_queryについて

  • 解決済 scanner0928

    (@scanner0928)


    皆様こんにちは。
    表題の件、3.7あたりから実装され、記事を日付から呼び出すのに便利だと知りました。
    現在作成のサイトで、特定の月の記事、過去\未来すべてを表示する必要がありましたが、
    その比較される年月日がカスタムフィールドに入っている値でした。

    投稿日においての、date_queryでの記事の絞り込みはできましたが、
    これを何とかカスタムフィールド値(DATE)でできないものかと思い、
    ここで質問させていただいております。

    皆様のお知恵を拝借できましたら幸いです。
    よろしくお願い致します。

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

    (@jim912)

    WP_Query の Custom Field Parameters を使い、type の指定を DATE (ただし、入力されている経緯式がPHPが日付型と判断でき、全角などが混じっていない前提)を指定していただければ実現可能かと思われます。

    トピック投稿者 scanner0928

    (@scanner0928)

    jim912様

    先日はありがとうございました。

    type の指定を DATE (ただし、入力されている経緯式がPHPが日付型と判断でき、全角などが混じっていない前提)

    とありますが、yy/mm/ddの形で良いのでしょうか。
    それとも、適当なフォーマットがあるのでしょうか。

    <?php
    $arg = array(
    ‘post_type’ => ‘outline’,
    ‘posts_per_page’ => -1,
    ‘orderby’ => ‘menu_order’,
    ‘order’ => ‘ASC’,
    ‘date_query’=>array(
    array( ‘monthnum’=>01,),
    ),
    ‘meta_query’ => array(
    array(
    “key” => “custom_date”,
    “value” => “????”
    ),
    );
    $datas = get_posts( $arg );
    if($datas):?>

    のように、カスタム投稿outlineで、custom_dateの1月の記事を抽出したい場合、
    meta_queryのvalueをどうしたら良いのか不明です。
    こんがらがってきました。

    お時間のある際、ご教示くださいましたら幸いです。

    モデレーター jim912

    (@jim912)

    yy/mm/ddの形で良いのでしょうか。
    それとも、適当なフォーマットがあるのでしょうか。

    type で DATE を指定した場合、データベースへのリクエスト(SQL)では、CAST関数を使って、型変換を行っています。このCAST関数で変換可能な値であることが必要です。
    どのような値であれば、変換可能かは、以下の記事が参考になります。

    日付データへの変換

    custom_dateの1月の記事を抽出したい場合、
    meta_queryのvalueをどうしたら良いのか不明です。

    WP_Query の Custom Field Parameters にある Multiple Custom Field Handling: のサンプルが参考になります。

    トピック投稿者 scanner0928

    (@scanner0928)

    type で DATE を指定した場合、データベースへのリクエスト(SQL)では、CAST関数を使って、型変換を行っています。このCAST関数で変換可能な値であることが必要です。
    どのような値であれば、変換可能かは、以下の記事が参考になります。

    ありがとうございます。
    DATEへ変換できる、【DATE型への変換の場合】の形なら大丈夫のようですね。

    WP_Query の Custom Field Parameters にある Multiple Custom Field Handling: のサンプルが参考になります。

    すみません、date_queryとmeta_queryの書き分け?が理解できていません。
    まさか、date_queryもmeta_queryと同じ書き方で通るのでしょうか。

    'date_query'=>array(
    array(
    	"key" => "custom_date",
    	"monthnum"=> 01,
    	'type' => 'numeric',
    	'compare' => 'BETWEEN'
    ),

    勝手に想像してしまいました。

    モデレーター jim912

    (@jim912)

    date_queryは、あくまでも投稿の公開日時に対して利用するもので、カスタムフィールドの値に使うことはできません。カスタムフィールドの値を検索する場合は meta_query、分類(タクソノミー)で検索する場合は tax_query を使う必要があります。

    また、date_query, meta_query, tax_query は指定に仕方こそ似ていますが、検索対象は全く異なり、指定可能な内容も同一ではありません。

    あくまでも、

    http://codex.wordpress.org/Class_Reference/WP_Query#Custom_Field_Parameters

    http://codex.wordpress.org/Class_Reference/WP_Meta_Query

    を参考として下さい。

    トピック投稿者 scanner0928

    (@scanner0928)

    ご指南、ありがとうございます。
    やはり、投稿の公開日時にのみ適応するものだったのですね。
    カスタムフィールドでの日付は、これまでどおりmeta_queryで抽出するように致します。
    ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「date_queryについて」には新たに返信することはできません。