reece
Estoy tratando de recorrer mis productos de WooCommerce como lo haría con los tipos de publicaciones personalizadas. Pero por alguna razón, este método no funciona. Recibo un error que tiene que ver conmigo usando have_posts()
. ¿Qué estoy haciendo mal?
Error
Error no detectado: llamada a una función miembro have_posts () en una matriz
Mi código
<?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();
}
} ?>
Actualizar
Descubrí que usar un bucle foreach funciona de la siguiente manera;
<?php
foreach( $products as $product ) {
echo $product->get_title();
} ?>
Pero aún me gustaría entender por qué este método no funciona con have_posts()
solo muju
$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());
}
}
función have_post()
es una función miembro de WordPress WP_Query
clase – y WooCommerce WC_Product_Query
la clase se está extendiendo WC_Object_Query
clase, no la WP_Query
– Entonces esta función no puede ser llamada
Debido a que $products es una matriz, no puede llamar a un método en él, solo en algún elemento. Si hiciste $productos[0]->have_posts() funcionaría.
uso sencillo
WP_Query
si quieres usarhave_post
con parámetros simples devueltos por la consulta y sin uso del objeto del producto allí.– Jaydip Nimavat
2 de marzo de 2019 a las 6:49