Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何让woocommerce产品列表在一个页面中显示所有产品?_Php_Wordpress_Woocommerce - Fatal编程技术网

Php 如何让woocommerce产品列表在一个页面中显示所有产品?

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是正确的过滤器。如果看不到任何效果,请添

我在一个站点中有以下类别: 我希望它在第一页中显示所有7种产品,即使我有100种产品在一个页面中显示它们。 我尝试过不同的解决方案,如将此添加到functions.php文件: 添加过滤器('loop_shop_per_page',创建函数('$cols','return-1;')

像这里提出的解决方案一样重写短代码

还有其他几个在线选项,但似乎都不起作用,我总是得到分页和限制


该站点中使用的主题是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' => '&larr;',
                    'next_text' => '&rarr;',
                    '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' => '&larr;',
                    'next_text' => '&rarr;',
                    '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年,我只需通过以下方式调整自定义面板中的一个参数: 外观>自定义>电子商务选项>商店档案边栏布局>每页产品总数 然后,把我想要的数字填进去