Php 如何让woocommerce产品列表在一个页面中显示所有产品?
我在一个站点中有以下类别: 我希望它在第一页中显示所有7种产品,即使我有100种产品在一个页面中显示它们。 我尝试过不同的解决方案,如将此添加到functions.php文件: 添加过滤器('loop_shop_per_page',创建函数('$cols','return-1;') 像这里提出的解决方案一样重写短代码 还有其他几个在线选项,但似乎都不起作用,我总是得到分页和限制Php 如何让woocommerce产品列表在一个页面中显示所有产品?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我在一个站点中有以下类别: 我希望它在第一页中显示所有7种产品,即使我有100种产品在一个页面中显示它们。 我尝试过不同的解决方案,如将此添加到functions.php文件: 添加过滤器('loop_shop_per_page',创建函数('$cols','return-1;') 像这里提出的解决方案一样重写短代码 还有其他几个在线选项,但似乎都不起作用,我总是得到分页和限制 该站点中使用的主题是Divi。loop\u shop\u per\u page是正确的过滤器。如果看不到任何效果,请添
该站点中使用的主题是Divi。
loop\u shop\u per\u page
是正确的过滤器。如果看不到任何效果,请添加稍后的优先级。在我的测试用例中,我的父主题是过滤loop\u shop\u per\u 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;
}
loop\u shop\u per\u page
是正确的过滤器。如果看不到任何效果,请添加稍后的优先级。在我的测试用例中,我的父主题是过滤loop\u shop\u per\u 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;
}
我将上述博客文章中的自定义代码更正并更改为:
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' );
function shortcode_settori($atts){
全球$WOOU循环;
提取(短码)附件(数组)(
“每页”=>“24”,
'列'=>'4',
'orderby'=>'title',
“订单”=>“描述”,
'settore'=>'',//Slugs
'运算符'=>'在'//可能的值为'IN','notin','AND'。
)美元(附件);;
如果(!$settore){
返回“”;
}
$paged=(get_query_var('paged'))?get_query_var('paged'):1;
//默认排序参数
$ordering\u args=WC()->query->get\u catalog\u ordering\u args($orderby,$order);
$args=数组(
“post_类型”=>“产品”,
“发布状态”=>“发布”,
“忽略粘性帖子”=>1,
“每页帖子”=>“999”,
“元查询”=>数组(
排列(
“键”=>“\u可见性”,
'value'=>数组('catalog','visible'),
'比较'=>'中'
)
),
“tax_query”=>数组(
排列(
“分类法”=>“产品分类”,
'field'=>'term\u id',//这是可选的,因为它默认为'term\u id'
“条款”=>$settore,
'运算符'=>'在'//可能的值为'IN','notin','AND'。
)
)
);
$products=新的WP_查询($args);
$woocommerce\u loop['columns']=$columns;
如果($products->have_posts()):?>
我将上述博客文章中的自定义代码更正并更改为:
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' );
function shortcode_settori($atts){
全球$WOOU循环;
提取(短码)附件(数组)(
“每页”=>“24”,
'列'=>'4',
'orderby'=>'title',
“订单”=>“描述”,
'settore'=>'',//Slugs
'运算符'=>'在'//可能的值为'IN','notin','AND'。
)美元(附件);;
如果(!$settore){
返回“”;
}
$paged=(get_query_var('paged'))?get_query_var('paged'):1;
//默认排序参数
$ordering\u args=WC()->query->get\u catalog\u ordering\u args($orderby,$order);
$args=数组(
“post_类型”=>“产品”,
“发布状态”=>“发布”,
“忽略粘性帖子”=>1,
“每页帖子”=>“999”,
“元查询”=>数组(
排列(
“键”=>“\u可见性”,
'value'=>数组('catalog','visible'),
'比较'=>'中'
)
),
“tax_query”=>数组(
排列(
“分类法”=>“产品分类”,
'field'=>'term\u id',//这是可选的,因为它默认为'term\u id'
“条款”=>$settore,
'运算符'=>'在'//可能的值为'IN','notin','AND'。
)
)
);
$products=新的WP_查询($args);
$woocommerce\u loop['columns']=$columns;
如果($products->have_posts()):?>
只需将条件检查添加到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;' ) );
}
只需将条件检查添加到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;' ) );
}
现在,在2019年,我只是通过以下方式调整自定义面板中的一个参数:
外观>自定义>电子商务选项>商店档案边栏布局>每页产品总数
然后,将我想要的数字填入其中。现在,在2019年,我只需通过以下方式调整自定义面板中的一个参数:
外观>自定义>电子商务选项>商店档案边栏布局>每页产品总数
然后,把我想要的数字填进去