Ich arbeite an einer Produktseite, auf der ich Bewertungen aus meinem Beitragstyp "Bewertungen" anzeige, wenn der Titel der Produktseite mit meinem Begriff aus der Taxonomie "Bewertungsprodukt" übereinstimmt.
Beispiel.
Titel der Produktseite: Kühlschrank
Beiträge (Rezensionen) anzeigen mit:
- Beitragstyp: 'Bewertungen'
- Taxonomie: 'Bewertungsprodukt'
- Begriff: Kühlschrank
Das funktioniert völlig gut. Aber manchmal habe ich keine Bewertungen für ein Produkt (weil es keine Übereinstimmung zwischen Produkttitel und Begriff gibt) und dann möchte ich "Allgemeine" Bewertungen anzeigen. Auf meiner Website sind dies Beiträge mit:
- Beitragstyp: 'Bewertungen'
- Taxonomie: 'Bewertungsprodukt'
- Laufzeit: Keine Laufzeit (!!!)
Diese Beiträge haben keinen Begriff aus der Taxonomie 'Review-Produkt'.
Meine Frage:
Wie kann ich Bewertungsbeiträge ohne Begriff anzeigen, wenn keine Bewertungsbeiträge vorhanden sind, die dem Produkttitel entsprechen?
Das habe ich jetzt:
function gtp_show_reviews( $number = 100, $term = null ) {
$reviews = new WP_Query( array(
'post_type' => 'reviews',
'review-product' => $term, // Fill this with product page slug (refrigerator)
));
if( $reviews->have_posts() ) {
while( $reviews->have_posts() ) {
$reviews->the_post();
// The review
}
}
else {
// Here I try to unset the 'review-product' term
unset($reviews->query_vars['review-product']);
unset($reviews->query_vars['term']);
while( $reviews->have_posts() ) {
$reviews->the_post();
// Check if review has no term
if( $reviews->has_term() == false ) {
// The review
}
}
}
wp_reset_postdata();
}
quelle
Antworten:
Sie können nicht dasselbe Objekt
WP_Query
zweimal verwenden. Daher müssen Sie einen weiteren mit einemtax_query
Parameter erstellen , um Beiträge abzurufen, die keinem Begriff zugeordnet sind.Die Idee ist, eine Liste aller Begriffe Ihrer Taxonomie abzurufen und sie als Argument an Ihre Steuerabfrage mit dem
NOT IN
Operator zu übergeben.Die zweite Schleife in Ihrem Beispiel sollte über das neue
WP_Query
Objekt laufen .quelle
Siehe: https://core.trac.wordpress.org/ticket/29181
quelle