php - the - woocommerce loop start
Woocommerce obtener productos (3)
No use WP_Query()
o get_posts()
. Del documento de WooCommerce:
wc_get_products y WC_Product_Query proporcionan una forma estándar de recuperar productos que son seguros de usar y que no se romperán debido a cambios en la base de datos en versiones futuras de WooCommerce. Es probable que la creación de WP_Queries o consultas de bases de datos clasifiquen su código en futuras versiones de WooCommerce a medida que los datos se muevan hacia tablas personalizadas para un mejor rendimiento.
Puede recuperar los productos que desea de esta manera:
$args = array(
''category'' => array( 34 ),
''orderby'' => ''name'',
);
$products = wc_get_products( $args );
Utilicé 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 intentado ahora obtener una lista de productos para una categoría en particular.
Ejemplo : obtener todos los productos para con cat_id=34
.
Sé que los productos se almacenan como publicaciones y han estado tratando de hacerlo, pero parece que no.
¿Cómo obtengo la lista de productos para una categoría en particular?
<?php
$args = array( ''post_type'' => ''product'', ''category'' => 34, ''posts_per_page'' => -1 );
$products = get_posts( $args );
?>
Esto debería atrapar todos los productos que desee, es posible que el tipo de publicación sea incorrecto, aunque no puedo recordar exactamente qué usa woo-commerce para el tipo de publicación. Devolverá una variedad de productos
<?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 mostrará una lista de todas las miniaturas y nombres de los 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.