Woocommerce productos
Usé el siguiente código para obtener la lista de categorías de productos de WooCommerce en mi sitio web de WordPress:
<?php
$taxonomy = 'product_cat';
$orderby = 'name';
$show_count = 0; // 1 for yes, 0 for no
$pad_counts = 0; // 1 for yes, 0 for no
$hierarchical = 0; // 1 for yes, 0 for no
$title = '';
$empty = 0;
$args = array(
'taxonomy' => $taxonomy,
'orderby' => $orderby,
'show_count' => $show_count,
'pad_counts' => $pad_counts,
'hierarchical' => $hierarchical,
'title_li' => $title,
'hide_empty' => $empty
);
?>
<?php $all_categories = get_categories( $args );
//print_r($all_categories);
foreach ($all_categories as $cat) {
//print_r($cat);
if($cat->category_parent == 0) {
$category_id = $cat->term_id;
?>
<?php
echo '<br /><a href="'. get_term_link($cat->slug, 'product_cat') .'">'. $cat->name .'</a>'; ?>
<?php
$args2 = array(
'taxonomy' => $taxonomy,
'child_of' => 0,
'parent' => $category_id,
'orderby' => $orderby,
'show_count' => $show_count,
'pad_counts' => $pad_counts,
'hierarchical' => $hierarchical,
'title_li' => $title,
'hide_empty' => $empty
);
$sub_cats = get_categories( $args2 );
if($sub_cats) {
foreach($sub_cats as $sub_category) {
echo $sub_category->name ;
}
} ?>
<?php }
}
?>
Esto funciona bien y devuelve la lista de categorías de productos. He estado tratando ahora de obtener una lista de productos para una categoría en particular.
Ejemplo: obtenga todos los productos con cat_id=34
.
Sé que los productos se almacenan como mensajes, y he estado tratando de hacer esto, pero parece que no puedo.
¿Cómo obtengo la lista de productos para un categoría en particular?
3 answers
<?php
$args = array(
'post_type' => 'product',
'posts_per_page' => 10,
'product_cat' => 'hoodies'
);
$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();
global $product;
echo '<br /><a href="'.get_permalink().'">' . woocommerce_get_product_thumbnail().' '.get_the_title().'</a>';
endwhile;
wp_reset_query();
?>
Esto listará todas las miniaturas y nombres de productos junto con sus enlaces a la página del producto. cambie el nombre de la categoría y posts_per_page según su requisito.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-28 12:11:50
<?php
$args = array( 'post_type' => 'product', 'category' => 34, 'posts_per_page' => -1 );
$products = get_posts( $args );
?>
Esto debería agarrar todos los productos que desee, puede que tenga el tipo de publicación equivocado, aunque no puedo recordar qué utiliza woo-commerce para el tipo de publicación. Devolverá una serie de productos
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-13 13:38:02
No usar WP_Query()
o get_posts()
. Del documento WooCommerce:
Wc_get_products y WC_Product_Query proporcionan una forma estándar de recuperar productos que es segura de usar y no se romperá debido a cambios en la base de datos en futuras versiones de WooCommerce. La creación de WP_Queries personalizados o consultas de base de datos es probable que rompa su código en futuras versiones de WooCommerce a medida que los datos se mueven hacia tablas personalizadas para un mejor rendimiento.
Puede recuperar los productos que desea como esto:
$args = array(
'category' => array( 34 ),
'orderby' => 'name',
);
$products = wc_get_products( $args );
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-05-21 15:54:32