WC_Product_Query funktioniert nicht mit have_posts()

Lesezeit: 1 Minute

Benutzer-Avatar
Reece

Ich versuche, meine WooCommerce-Produkte so zu durchlaufen, wie Sie es mit benutzerdefinierten Beitragstypen tun würden. Aber aus irgendeinem Grund funktioniert diese Methode nicht. Ich erhalte eine Fehlermeldung, die mit meiner Verwendung zu tun hat have_posts(). Was mache ich falsch?

Fehler

Nicht erfasster Fehler: Aufruf einer Member-Funktion have_posts() im Array

Mein Code

<?php
 $query = new WC_Product_Query( array(
     'limit' => 10,
     'orderby' => 'date',
     'order' => 'DESC'
 ) );

 $products = $query->get_products();

 if( $products->have_posts() ) {
    while( $products->have_posts() ) {
      $products->the_post();
      echo the_permalink();
    }
} ?>

Aktualisieren

Ich habe festgestellt, dass die Verwendung einer foreach-Schleife wie folgt funktioniert;

<?php
foreach( $products as $product ) {
    echo $product->get_title();
} ?>

Aber ich würde trotzdem gerne verstehen, warum diese Methode nicht funktioniert have_posts()

  • Einfach verwenden WP_Query wenn Sie verwenden möchten have_post mit einfachen Parametern, die von der Abfrage zurückgegeben werden und dort kein Produktobjekt verwendet wird.

    – Jaydip Nimavat

    2. März 2019 um 6:49 Uhr


Benutzer-Avatar
mujunur

$query = new WC_Product_Query(array(
    'limit' => 10,
    'orderby' => 'date',
    'order' => 'DESC'
        ));

$products = $query->get_products();

if (!empty($products)) {
    foreach ($products as $product) {

        echo get_permalink($product->get_id());
    }
}

Funktion have_post() ist eine Mitgliedsfunktion von WordPress WP_Query Klasse – und WooCommerce WC_Product_Query Klasse verlängert sich WC_Object_Query Klasse, nicht die WP_Query – Diese Funktion kann also nicht aufgerufen werden

Da $products ein Array ist, können Sie darin keine Methode aufrufen, nur bei einem Element. Wenn Sie $products gemacht haben[0]->have_posts() es würde funktionieren.

1372710cookie-checkWC_Product_Query funktioniert nicht mit have_posts()

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy