Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/13.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_Plugins_Woocommerce_Shortcode - Fatal编程技术网

Php WooCommerce短代码产品列表

Php WooCommerce短代码产品列表,php,wordpress,plugins,woocommerce,shortcode,Php,Wordpress,Plugins,Woocommerce,Shortcode,我必须制作一个Wordpress插件,为WooCommerce添加快捷码。我想从一个特定的产品类别和最大数量的产品显示产品。快捷码参数应为类别ID和产品限制。我想我应该使用WP\u Queryobject 我需要让它看起来像这样: 短代码如下:[productslist\u category=“[category\u ID]”limit=“[product\u limit]”] 我使用了下面的代码(感谢): 如果(!function_存在('products_list_in_a_product

我必须制作一个Wordpress插件,为WooCommerce添加快捷码。我想从一个特定的产品类别和最大数量的产品显示产品。快捷码参数应为类别ID和产品限制。我想我应该使用
WP\u Query
object

我需要让它看起来像这样:

短代码如下:
[productslist\u category=“[category\u ID]”limit=“[product\u limit]”]

我使用了下面的代码(感谢):

如果(!function_存在('products_list_in_a_product_category')){
功能产品列表在产品类别中($atts){
//短代码属性
$atts=短码\附加(
排列(
“猫”=>“,
'limit'=>'4',//每页默认产品
'column'=>'4',//默认列
),
$atts,“产品列表”
);
//询问
$posts=获取_posts(数组(
“post_类型”=>“产品”,
“每页帖子”=>intval($atts['limit'])+1,
“产品类别”=>$atts[“类别”],
) );
$output='';
//环路
foreach($post作为$post_obj)
$ids\u array[]=$post\u obj->ID;
$ids=内爆(“,”,$ids_数组);
$columns=$atts['column'];
$output.=do_短码(“[products id=$ids columns=$columns]”);
返回$output;
}
添加快捷码('productslist'、'products\u list\u in_a_product\u category');}
但是我犯了一个错误。它表示内爆函数有问题。

$args=array('post\u type'=>'product','post\u status'=>'publish','ignore\u sticky\u posts'=>1','posts\u per\u page'=>'12','meta\u query'=>array(array('key'=>'visibility','value'=>array('catalog','visible'),'compare'=>'IN')),'compare'=>'IN'),'tax\u query=>array(array)'('taxonomy'=>'product_cat','field'=>'term_id',//这是可选的,因为它默认为'term_id''terms'=>26,'operator'=>'IN'//可能的值是'IN','NOT IN','和');$products=新的WP_查询($args);var_dump($products)

这是您删除的上一个问题的原始答案,您可以在此处使用:

该代码在woocommerce版本2.6.x和3+中完美运行。


这是我的原始答案代码,您(在删除之前的问题之前):

这是一个基于您的短代码与现有的
[product]
WooCommerce短代码混合而成的解决方案。正如您将看到的,您将得到您所期望的

这是代码:

if( !function_exists('products_list_in_a_product_category') ) {

    function products_list_in_a_product_category( $atts ) {

        // Shortcode Attributes
        $atts = shortcode_atts(
            array(
                'cat'       => '',
                'limit'     => '5', // default product per page
                'column'    => '4', // default columns
            ),
            $atts, 'productslist'
        );

        // The query
        $posts = get_posts( array(
            'post_type'      => 'product',
            'posts_per_page' => intval($atts['limit'])+1,
            'product_cat'    => $atts['cat'],
        ) );

        $output = '<div class="products-in-'.$atts['cat'].'">';

        // The loop
        foreach($posts as $post_obj)
            $ids_array[] = $post_obj->ID;

        $ids = implode( ',', $ids_array );

        $columns = $atts['column'];

        $output .= do_shortcode ( "[products ids=$ids columns=$columns ]" ) . '</div>';

        return $output;
    }
    add_shortcode( 'productslist', 'products_list_in_a_product_category' );
}
您将获得以下信息:


-

我说过内爆函数有错误警告:内爆():无效参数传递无警告且无错误…请参阅下面我的答案中我的2个测试过的实时链接。错误是由于安装中的其他原因造成的。您需要将PHP 5.6与WP和WooCommerce一起使用…此代码非常有效。请为此添加一些代码格式。因为它不太可读。
if( !function_exists('products_list_in_a_product_category') ) {

    function products_list_in_a_product_category( $atts ) {

        // Shortcode Attributes
        $atts = shortcode_atts(
            array(
                'cat'       => '',
                'limit'     => '5', // default product per page
                'column'    => '4', // default columns
            ),
            $atts, 'productslist'
        );

        // The query
        $posts = get_posts( array(
            'post_type'      => 'product',
            'posts_per_page' => intval($atts['limit'])+1,
            'product_cat'    => $atts['cat'],
        ) );

        $output = '<div class="products-in-'.$atts['cat'].'">';

        // The loop
        foreach($posts as $post_obj)
            $ids_array[] = $post_obj->ID;

        $ids = implode( ',', $ids_array );

        $columns = $atts['column'];

        $output .= do_shortcode ( "[products ids=$ids columns=$columns ]" ) . '</div>';

        return $output;
    }
    add_shortcode( 'productslist', 'products_list_in_a_product_category' );
}
[productslist cat="clothing" limit="4"]