2

各投稿には投稿日と「リソースフィールド」があり、日付のある別のフィールドがあります(投稿日とは異なります)。リソースフィールドの日付にアクセスする方法を誰か教えてもらえますか? 投稿があり、「リソースフィールド」->カテゴリごとに日付の降順で並べ替える必要があります。

これはクエリですが、機能しません...

<?php $terms = get_terms( 'resources-categories', array('hide_empty' => false)); ?>
<?php foreach( $terms as $term ): ?>
<ul>
<?php
$query = new WP_Query( array(
            'post_type' => 'resources',
            'resources-categories' => $term->slug,
            'posts_per_page' => '-1',
            'meta_key' => 'date',
            'meta_value' => date('F Y'),
            'meta_compare' => '>',
            'orderby' => 'meta_key',
            'order' => 'DESC',
            'post_parent' => 0) 
            );
if ($query->have_posts()) : $count = 0;
while($query->have_posts()) :
$query->the_post(); ?>
<li> 
//print code...
</li>
<?php endwhile; endif; ?>
4

1 に答える 1

2

配列のmeta_queryプロパティを使用すると、運が良くなる傾向があります。$argsこのプロパティを使用して再構築された例を次に示します。

$today = date('Y-m-d');
$args = array(
    'post_type' => 'resources',
    'posts_per_page' => '-1',
    'meta_key' => 'date',
    'meta_query' => array(
        array(
            'key' => 'date',
            'value' => $today,
            'type' => 'date',
            'compare' => '>'
        )
    ),
    'orderby' => 'meta_value_num',
    'order' => 'DESC',
    'post_parent' => 0
);

いくつかのメモ:

  • 日付形式を変更したことに注意してください。元の形式は、月のテキスト表現を使用する予定でした。その値は文字列として表現されるため、WordPress はその値を「比較」することができません。日付が標準の SQL 形式で保存されていると仮定していますyyyy-mm-dd。しかし、これはあなたにとって重大な障害になる可能性があります。日付の実際の形式 (データベースに格納されているため) を把握し、その形式を$today変数に一致させることができることを確認する必要があります。

  • meta_key値が含まれていることに注意してください。冗長に見えますが、そうではありません。並べ替えが機能するために必要です。

  • 最後に、 という名前のプロパティを含めました'resources-categories' => $term->slugが、クエリには何の影響もありません。(だから私はそれを取り除いた)。分類法に対してさらにクエリを実行する必要がある場合は、配列のtax_queryプロパティを確認する必要があります。$args

これが少し役立つことを願って、楽しんでください!

于 2013-05-17T22:42:31.747 に答える