estoy usando WordPress 3.9 y WooCommerce 2.1.8y queriendo saber cómo puedo mostrar una sola fila de cuatro publicaciones relacionadas que el usuario está viendo actualmente, que es relativa a la etiqueta o etiquetas del puesto, en lugar del categoría Está dentro.
Idealmente, me gustaría mostrar cuatro productos relacionados con el etiquetas del artículo que se está viendo actualmente en la parte inferior de mis páginas de productos individuales, específicamente, cada una de las imágenes o miniaturas destacadas de la publicación relacionada, y los precios. Si es posible, una solución también escrita desde el funciones.php expediente.
El siguiente código es lo que tengo hasta ahora, que muestra el categorías del puesto, en lugar del etiquetas está basado en:
add_action( 'woocommerce_after_single_product_summary', 'woocommerce_output_related_products', 20);
function woocommerce_output_related_products() {
$output = null;
ob_start();
woocommerce_related_products(array(
'columns' => 4,
'posts_per_page' => 4,
'post_type' => 'product',
'fields' => 'ids',
'meta_query' => $meta_query,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'product_cat',
'field' => 'id',
'terms' => $cats_array
),
array(
'taxonomy' => 'product_tag',
'field' => 'id',
'terms' => $tags_array
)
)
));
$content = ob_get_clean();
if($content) { $output .= $content; }
echo '<div class="clear"></div>' . $output;
}
Cualquier ayuda sería muy apreciada,
Gracias.
Danijel
Hay otro filtro, woocommerce_related_products_args
en /templates/single-product/related.php
archivo de plantilla, que anula su matriz de consulta.
Una posible solución es anular related.php
plantilla, cree una nueva plantilla y ejecute WP_Query
allí, luego incluya esa plantilla con wc_get_template()
función.
La otra es aprovechar los filtros incorporados (existe un buen número de ellos). Trataré de explicar que filtros aquí, cuál es su propósito y cómo usarlos, en el orden de su ejecución.
woocommerce_output_related_products_args
El primer filtro para configurar el woocommerce_related_products()
argumentos de la función. La función carga related.php
la plantilla y los argumentos pasados son las opciones globales para la plantilla. Los argumentos son "posts_per_page"
, "columns"
y "orderby"
.
/* An example of how to set the four products per page */
add_filter( 'woocommerce_output_related_products_args', function( $args )
{
$args = wp_parse_args( array( 'posts_per_page' => 4 ), $args );
return $args;
});
Al principio de la plantilla el WooCommerce $product
objeto busca los productos relacionados por categoría y etiqueta. El resultado es una matriz de ID de publicación que luego se usa para el post__in
cláusula en la consulta principal. Hay algunos filtros disponibles.
woocommerce_product_related_posts_relate_by_category
Se utiliza para excluir los productos relacionados por categoría.
add_filter( 'woocommerce_product_related_posts_relate_by_category', function() {
return false;
});
woocommerce_product_related_posts_relate_by_tag
Excluye los productos relacionados por etiqueta.
add_filter( 'woocommerce_product_related_posts_relate_by_tag', function() {
return false;
});
woocommerce_product_related_posts_query
Para hacer una modificación final de las partes de la consulta.
add_filter( 'woocommerce_product_related_posts_query', function( $query ) {
// modify $query array
return $query;
});
El último filtro que brinda la posibilidad de modificar los parámetros para la consulta principal es woocommerce_related_products_args
.
woocommerce_related_products_args
Desde ahora la consulta se basa en post__in
cláusula, elimine esa parte y agregue sus partes de consulta personalizadas.
add_filter( 'woocommerce_related_products_args', function( $args )
{
unset( $args['post__in'] );
$args['tax_query'] = array( /* taxonomy parameters */ );
return $args;
});
Un ejemplo de cómo mostrar cuatro productos relacionados con las etiquetas.
add_filter( 'woocommerce_output_related_products_args', function( $args )
{
$args = wp_parse_args( array( 'posts_per_page' => 4 ), $args );
return $args;
});
add_filter( 'woocommerce_product_related_posts_relate_by_category', function() {
return false;
});
Algunos consejos que pueden ser útiles:
En cada enlace de filtro, si no está seguro de cuáles son los argumentos predeterminados que se pasan, use print_r
en ellos para ver los valores en el navegador. Además, una mirada a los archivos fuente de WooCommerce aclarará algunas cosas. Y finalmente, muchas veces no es necesario anular por completo las funciones predeterminadas de WooCommerce, ya que los creadores del complemento realmente se esforzaron con todos esos filtros para facilitar las cosas.
-
Reescribí la respuesta lo mejor que pude, así que espero que ahora las cosas estén más claras.
– Daniel
27 mayo 2014 a las 15:28
-
Tenga en cuenta que el
woocommerce_related_products_args
el gancho del filtro ya no existe.– Philipp Bammes
25 de febrero de 2020 a las 10:08