it-swarm.com.de

meta_query funktioniert nicht richtig

Ich versuche, eine Abfrage auszuführen, in der nur Elemente angezeigt werden, die eine Bedingung in einem Auswahlfeld "Erweiterte benutzerdefinierte Felder" erfüllen, aber es wird nichts angezeigt. Hier ist meine Frage. Jede Hilfe wäre dankbar:

<?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} Code hat sich etwas geändert. Hier ist der neue Code:

<?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;

Dies ist in der Datei archive-speight_home_plans.php meines Themas.

1
Laura Sage

Basierend auf dem Codex enthält der meta_query -Parameter ein oder mehrere Arrays mit dem relation -Parameter nicht festgelegt , wenn es sich um ein einzelnes inneres meta_query-Array handelt.

Entfernen Sie auch den Parameter page, da er nur für eine statische Startseite dient.

Ihr args-Array sollte folgendermaßen aussehen:

$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