web-dev-qa-db-ja.com

meta_queryが正しく機能していません

[詳細カスタムフィールド]選択ボックスに条件を満たすアイテムのみを表示するクエリを実行しようとしていますが、何も表示されません。これが私の質問です。任意の助けがいただければ幸いです。

<?php $args = array(
    'post_type' => 'home_plans',
    'orderby'=> 'date',
    'order' => 'Rand',
    'numberposts' => '12',
    'meta_query' => array(
        'relation' => 'AND',
            array(
                'key' => 'display_where',
                'value' => 'here',
                'compare' => 'LIKE'
            )
    )
); ?>

<div id="ms-container" class="row archive">
    <ul id="posts_list">
        <?php $recent_posts = wp_get_recent_posts( $args );
        $selected = get_field('display_where');

        foreach( $recent_posts as $recent ){
            get_template_part( 'template-parts/plan-archive-loop', get_post_format() );
        }

        //wp_reset_postdata();
        ?>
    </ul>
</div>

{edit}コードが少し変わりました。これが新しいコードです。

<?php $archive_args = array(
    'post_type' => 'speight_home_plans',
    'orderby'=> 'title',
    'order' => 'ASC',
    'posts_per_page' => 12,
    'paged' => $paged,
    'page' => $paged,
    'meta_query' => array(
        'key' => 'display_where',
        'value' => 'speight',
        'compare' => 'LIKE'
    )
);

$archive_query = new WP_Query( $archive_args );
if ( $archive_query->have_posts() ) :

$paged = ( get_query_var('paged') ) ? get_query_var('paged') : 1;
$total_posts = $archive_query->found_posts;
$start_post = ($paged - 1) * $posts_per_page + 1;
$end_post = min($start_post + $posts_per_page - 1, $total_posts);

echo "<p class=results-count>Showing $start_post - $end_post of $total_posts home plans.</p>";

while ( $archive_query->have_posts() ) : $archive_query->the_post();
    get_template_part( 'template-parts/plan-archive-loop', get_post_format() );
endwhile;
wp_reset_postdata();
endif;

これは私のテーマのarchive-speight_home_plans.phpファイルにあります。

1
Laura Sage

codex に基づいて、meta_queryパラメーターは、relationパラメーターが設定されていないが1つの内側のmeta_query配列を持つ1つ以上の配列を含みます。

また、静的フロントページ専用のpageパラメータも削除します。

あなたのargs配列はそのように見えるはずです:

$archive_args = array(
    'post_type' => 'speight_home_plans',
    'orderby'=> 'title',
    'order' => 'ASC',
    'posts_per_page' => 12,
    'paged' => $paged,
    'meta_query' => array(
        array(
            'key' => 'display_where',
            'value' => 'speight',
            'compare' => 'LIKE'
        ), 
    ), 
);
1
Kuuak