Php WooCommerce短代码产品列表
我必须制作一个Wordpress插件,为WooCommerce添加快捷码。我想从一个特定的产品类别和最大数量的产品显示产品。快捷码参数应为类别ID和产品限制。我想我应该使用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
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"]