Ich benutze eine WP_Query
auf einer Seite, um einige Datensätze mit einem benutzerdefinierten Post-Typ und einem bestimmten Meta-Wert abrufen.WordPress WP_Query Schleife unterscheidet sich von tatsächlichen Abfrage
Die Anfrage und die Zählung sehen korrekt aus, aber wenn ich tatsächlich die Datensätze durchblättere, erhalte ich alle Datensätze mit dem benutzerdefinierten Post-Typ, als ob der Meta-Wert nicht angewendet wird Ich würde in der Standardschleife sehen - nicht was ich mit meiner benutzerdefinierten Abfrage bekommen würde.
Hier ist die Abfrage eingerichtet (mit einigen Debug-Informationen) ...
<?php
$args= array(
'post_type' => 'videos',
'posts_per_page' => 4,
'offset' => 0,
'meta_key' => 'custom_field',
'meta_value' => '1'
);
$videoQuery = new WP_Query($args);
echo $videoQuery->request;
echo '-->' . $videoQuery->found_posts;
?>
Die Abfrage von ->request
wie erwartet:
SELECT SQL_CALC_FOUND_ROWS wp_posts.ID
FROM wp_posts
INNER JOIN wp_postmeta
ON (wp_posts.ID = wp_postmeta.post_id)
WHERE 1=1
AND ((wp_postmeta.meta_key = 'custom_field' AND wp_postmeta.meta_value = '1'))
AND wp_posts.post_type = 'videos'
AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
GROUP BY wp_posts.ID ORDER BY wp_posts.post_date DESC LIMIT 0, 4
Gefunden Beiträge 1 als zu erwarten:
-> 1
Wenn ich die Abfrage ausführen, bekomme ich die ID, die ich erwarten zu sehen.
Aber wenn ich Schleife die Ergebnisse, die ich eine Tonne Aufzeichnungen Ausgabe erhalten (sie sehen aus wie die Platten, die ich eher in der Standard-Schleife finden würde, als die Aufzeichnungen für meine WP_Query):
<?php if ($videoQuery->have_posts()) : ?>
<div>
<?php while ($videoQuery->have_posts()) : $videoQuery->the_post(); ?>
<article>
<?php the_field('custom_thing_video'); ?>
<?php the_field('custom_thing_name'); ?>
<div class="tax">
<?php echo get_the_term_list($post->ID, 'video'); ?>
</div>
</article>
<?php endwhile; ?>
</div>
<?php endif; ?>
Was habe ich verpasst, das gibt mir die richtigen Informationen in der Schleife?
Um zu klären, Sie viele ' ' bekommen? Gibt es 'pre_get_posts'-Filter im Spiel? –
janh
Hallo @janh - ich bekomme viele dieser Artikel. Ich bin auf einer Seite, auf der die benutzerdefinierten Beitragstypen angezeigt werden, und sieht eher wie die "Standardergebnisse" aus als meine benutzerdefinierten Abfrageergebnisse. – Fenton
Das ist sehr seltsam. Läuft all dies innerhalb der Hauptschleife (z. B. viele Male ausgeführt)? 'get_posts' verwendet intern WP_Query, es sollte also keinen Unterschied machen. – janh