我在网站中有以下类别: http://rivetnuttool.com/site/product-category/blue-pneumatic-rivet-nut-tools/ 我希望它能够显示第一页中的所有7种产品,即使我有100种产品可以在一个页面中显示它们。 我尝试过不同的解决方案,比如将它添加到我的functions.php文件中: add_filter('loop_shop_per_page',create_function('$ cols','return -1;'));
重写短代码,就像这里提出的解决方案http://ideas.woothemes.com/forums/133476-woocommerce/suggestions/4146798-add-pagination-support-for-list-of-products-render
一样还有其他一些在线选项,而且似乎都没有,我总是得到分页和限制。
该网站使用的主题是Divi。
答案 0 :(得分:2)
loop_shop_per_page
是正确的过滤条件。如果您没有看到任何效果,请添加以后的优先级。在我的测试用例中,我的父主题是过滤loop_shop_per_page
所以我的孩子主题的过滤器没有做任何事情。
add_filter( 'loop_shop_per_page', 'so_31843880_show_all_products', 20 );
function so_31843880_show_all_products(){
return -1;
}
要将过滤器仅应用于产品类别,您需要添加一些条件逻辑:
add_filter( 'loop_shop_per_page', 'so_show_all_products' );
function so_31843880_show_all_products($per_page){
if( is_taxonomy('product_cat') ){
$per_page = -1;
}
return $per_page;
}
答案 1 :(得分:2)
只需将条件检查添加到functions.php文件中:
if( isset( $_GET['showall'] ) )
{
add_filter( 'loop_shop_per_page', create_function( '$cols', 'return -1;' ) );
}
else
{
add_filter( 'loop_shop_per_page', create_function( '$cols', 'return 12;' ) );
}
答案 2 :(得分:0)
我更正并将上述博文中的自定义代码更改为:
function shortcode_settori( $atts ) {
global $woocommerce_loop;
extract( shortcode_atts( array(
'per_page' => '24',
'columns' => '4',
'orderby' => 'title',
'order' => 'desc',
'settore' => '', // Slugs
'operator' => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
), $atts ) );
if ( ! $settore ) {
return '';
}
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
// Default ordering args
$ordering_args = WC()->query->get_catalog_ordering_args( $orderby, $order );
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'ignore_sticky_posts' => 1,
'posts_per_page' => '999',
'meta_query' => array(
array(
'key' => '_visibility',
'value' => array('catalog', 'visible'),
'compare' => 'IN'
)
),
'tax_query' => array(
array(
'taxonomy' => 'product_cat',
'field' => 'term_id', //This is optional, as it defaults to 'term_id'
'terms' => $settore,
'operator' => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'.
)
)
);
$products = new WP_Query($args);
$woocommerce_loop['columns'] = $columns;
if ( $products->have_posts() ) : ?>
<?php woocommerce_product_loop_start(); ?>
<?php while ( $products->have_posts() ) : $products->the_post(); ?>
<?php wc_get_template_part( 'content', 'product' ); ?>
<?php endwhile; // end of the loop. ?>
<?php woocommerce_product_loop_end(); ?>
<?php endif;
if($products->max_num_pages>1){
?>
<nav class="woocommerce-pagination">
<?php
echo paginate_links( apply_filters( 'woocommerce_pagination_args', array(
'base' => esc_url( str_replace( 999999999, '%#%', remove_query_arg( 'add-to-cart', get_pagenum_link( 999999999, false ) ) ) ),
'format' => '',
'current' => max( 1, get_query_var( 'paged' ) ),
'total' => $products->max_num_pages,
'prev_text' => '←',
'next_text' => '→',
'type' => 'list',
'end_size' => 3,
'mid_size' => 3
) ) );
?>
</nav>
<?php }
woocommerce_reset_loop();
wp_reset_postdata();
echo $return;
$return = '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';
// Remove ordering query arguments
WC()->query->remove_ordering_args();
return $return;
}
add_shortcode( 'prodotti_per_settore', 'shortcode_settori' );
现在一切正常。
答案 3 :(得分:0)
现在,在2019年,我可以通过以下方式在“自定义”面板中调整参数: 外观>自定义> WooCommerce选项> Shop Archive侧边栏布局>每页总产品 然后,在其中填入我想要的号码。