Wordpress 创建销售产品的WooCommerce页面
我正在尝试制作一个页面(默认woocommerce归档样式),它将只显示正在销售的产品。这里要提的是,我只有,可变的产品和不简单的 我试着制作我的自定义短代码Wordpress 创建销售产品的WooCommerce页面,wordpress,woocommerce,Wordpress,Woocommerce,我正在尝试制作一个页面(默认woocommerce归档样式),它将只显示正在销售的产品。这里要提的是,我只有,可变的产品和不简单的 我试着制作我的自定义短代码 global $woocommerce_loop; $atts = shortcode_atts( array( 'per_page' => '-1', 'columns' => '4', 'orderby' => 'title', 'order
global $woocommerce_loop;
$atts = shortcode_atts( array(
'per_page' => '-1',
'columns' => '4',
'orderby' => 'title',
'order' => 'asc'
), $atts );
// Get products on sale
$product_ids_on_sale = wc_get_product_ids_on_sale();
$meta_query = WC()->query->get_meta_query();
$args = array(
'posts_per_page' => $atts['per_page'],
'orderby' => $atts['orderby'],
'order' => $atts['order'],
'no_found_rows' => 1,
'post_status' => 'publish',
'post_type' => 'product',
'meta_query' => $meta_query,
'post__in' => array_merge( array( 0 ), $product_ids_on_sale )
);
ob_start();
$products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) );
$columns = absint( $atts['columns'] );
$woocommerce_loop['columns'] = $columns;
if ( $products->have_posts() ) :
woocommerce_product_loop_start();
while ( $products->have_posts() ) : $products->the_post();
wc_get_template_part( 'content', 'product' );
endwhile; // end of the loop.
woocommerce_product_loop_end();
endif;
wp_reset_postdata();
return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>';
global$woocmerce\u循环;
$atts=短码_atts(数组)(
'每页'=>'-1',
'列'=>'4',
'orderby'=>'title',
“订单”=>“asc”
)(港币),;
//销售产品
$product_ids_on_sale=wc_get_product_id_on_sale();
$meta_query=WC()->query->get_meta_query();
$args=数组(
“每页帖子”=>$atts[“每页”],
'orderby'=>$atts['orderby'],
“订单”=>$atts[“订单”],
“未找到行”=>1,
“发布状态”=>“发布”,
“post_类型”=>“产品”,
“meta\u query”=>$meta\u query,
'post___in'=>array_merge(array(0),$product_id_on_sale)
);
ob_start();
$products=新的WP_查询(应用_过滤器('woocommerce_shortcode_products_Query',$args,$atts));
$columns=absint($atts['columns']);
$woocommerce\u loop['columns']=$columns;
如果($products->have_posts()):
woocommerce_product_loop_start();
而($products->have_posts()):$products->the_post();
wc_获取_模板_零件(‘内容’、‘产品’);
endwhile;//循环结束。
woocommerce_product_loop_end();
endif;
wp_reset_postdata();
返回“”。把你弄干净;
但结果我只得到了两种产品
有什么帮助或想法吗?为什么要创建新的快捷码?Woocommerce提供了自己的快捷码,以自己的档案风格展示销售中的产品:
[每_page=“12”销售产品]
您可以看到整个列表为什么要创建新的短代码?Woocommerce提供了自己的快捷码,以自己的档案风格展示销售中的产品:
[每_page=“12”销售产品]
您可以看到整个列表我通过创建自定义快捷码找到了一个临时解决方案。我不知道为什么我不能用默认的woocommerce短代码获得所有销售产品 这对我很有用: 函数变量\销售\产品($atts){ 全球$商业$产品
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1
);
ob_start();
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
woocommerce_product_loop_start();
while ( $loop->have_posts() ) : $loop->the_post();
$id = get_the_ID();
$_product = wc_get_product( $id );
if($_product->is_on_sale()){
wc_get_template_part( 'content', 'product' );
}
endwhile;
woocommerce_product_loop_end();
}
wp_reset_postdata();
return '<div class="woocommerce columns-4">' . ob_get_clean() . '</div>';
}
add_shortcode( 'variation_sale_product', 'variable_sale_products' );
$args=array(
“post_类型”=>“产品”,
“发布状态”=>“发布”,
“每页帖子”=>-1
);
ob_start();
$loop=新的WP_查询($args);
如果($loop->have_posts()){
woocommerce_product_loop_start();
而($loop->have_posts()):$loop->the_post();
$id=get_the_id();
$\u product=wc\u get\u product($id);
如果($\产品->正在销售()){
wc_获取_模板_零件(‘内容’、‘产品’);
}
结束时;
woocommerce_product_loop_end();
}
wp_reset_postdata();
返回“”ob_get_clean()。';
}
添加快捷码(“变量销售产品”、“变量销售产品”);
如果您有任何其他建议,我想听听您的意见我通过创建自定义快捷码找到了一个临时解决方案。我不知道为什么我不能用默认的woocommerce短代码获得所有销售产品 这对我很有用: 函数变量\销售\产品($atts){ 全球$商业$产品
$args = array(
'post_type' => 'product',
'post_status' => 'publish',
'posts_per_page' => -1
);
ob_start();
$loop = new WP_Query( $args );
if ( $loop->have_posts() ) {
woocommerce_product_loop_start();
while ( $loop->have_posts() ) : $loop->the_post();
$id = get_the_ID();
$_product = wc_get_product( $id );
if($_product->is_on_sale()){
wc_get_template_part( 'content', 'product' );
}
endwhile;
woocommerce_product_loop_end();
}
wp_reset_postdata();
return '<div class="woocommerce columns-4">' . ob_get_clean() . '</div>';
}
add_shortcode( 'variation_sale_product', 'variable_sale_products' );
$args=array(
“post_类型”=>“产品”,
“发布状态”=>“发布”,
“每页帖子”=>-1
);
ob_start();
$loop=新的WP_查询($args);
如果($loop->have_posts()){
woocommerce_product_loop_start();
而($loop->have_posts()):$loop->the_post();
$id=get_the_id();
$\u product=wc\u get\u product($id);
如果($\产品->正在销售()){
wc_获取_模板_零件(‘内容’、‘产品’);
}
结束时;
woocommerce_product_loop_end();
}
wp_reset_postdata();
返回“”ob_get_clean()。';
}
添加快捷码(“变量销售产品”、“变量销售产品”);
如果您有任何其他建议,我想听听您的意见尝试扩展$args(此代码添加销售简单和可变产品):
尝试扩展$args(此代码添加销售简单和可变产品):
我尝试了
[sale\u products per_page=“12”]
,但它只显示了一种产品
以下是我展示所有在售产品的步骤:
1-转到WooCommerce->Status->Tools选项卡,单击旁边的按钮生成查找表,并在再次检查之前给它一些时间完成。如果这不起作用,请继续下一步
2-将短代码更新为[sale\u products per_page=“32”paginate=“true”columns=“4”orderby=“random”]
。同样,如果这不起作用,请执行下一步
3-这是不符合逻辑的,但我所做的是,我删除了出现在销售页面上的项目的“销售价格”。之后,所有其他物品都出现了
希望这对任何人都有帮助我尝试了
[sale\u products per_page=“12”]
,但它只显示了一种产品
以下是我展示所有在售产品的步骤:
1-转到WooCommerce->Status->Tools选项卡,单击旁边的按钮生成查找表,并在再次检查之前给它一些时间完成。如果这不起作用,请继续下一步
2-将短代码更新为[sale\u products per_page=“32”paginate=“true”columns=“4”orderby=“random”]
。同样,如果这不起作用,请执行下一步
3-这是不符合逻辑的,但我所做的是,我删除了出现在销售页面上的项目的“销售价格”。之后,所有其他物品都出现了
希望这对任何人都有帮助嗯,我已经试过了