【进阶】woocommerce自定义循环调用精选、促销以及产品排序

wordpress&woocommerce开发记录WordPress技术博客

woocommerce自定义产品循环的调用

之前我们发布了一篇【现成代码】woocommerce主循环外调用指定的产品分类的文章,可以让你在主循环之外调用woocommerce的产品。

而之前的文章所说明的是调用woocommerce产品时,是使用woocommerce产品分类来调用具体的文章,

实际上,woocommerce的产品调用和我们在wordpress自定义循环中所使用的方法WP_Query是类似的,但又稍有不同,这里我们对于woocommerce产品调用的其他一些方式进行总结。

 

本文将会介绍woocommerce自定义产品循环调用筛选,从而帮助你在主循环之外调用自己想要的woocommerce产品。

  1. 只调用精选产品(也就是在后台woocommerce产品列表的星标产品)
  2. 只调用促销的产品(促销产品是有原价和现价的产品)
  3. 产品按照价格从高到低排序
  4. 产品按照价格从低到高排序

实际上这里比较少资料或者无法与wordpress通用的调用只有1调用精选产品和促销产品,其他的排序显示基本上与wordpress的自定义循环相同。

 

woocommerce自定义循环调用精选产品

代码以及注释如下:

 

global $wp_query, $post, $woocommerce,$query_string;
$product_visibility_term_ids = wc_get_product_visibility_term_ids();//获取精选产品
$args = array(
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'product_visibility',//按照产品显示查询
'field'    => 'term_taxonomy_id',
'terms'    => $product_visibility_term_ids['featured'],//筛选出精选产品
),
),
'posts_per_page' => 5,//一共需要调用的文章数量
'post_status'    => 'publish',//调用的文章为已经发布
'post_type'      => 'product',//调用的类型为产品(product)
'no_found_rows'  => 1,
'order'          => "ASC",//文章排序为时间正排序
'meta_query'     => array()//还可以使用post meta进行查询,这个和wordpress循环中使用一样
);
//以上为循环的参数
$query= new WP_Query( apply_filters( 'woocommerce_products_widget_query_args', $args ) );//建立循环查询
//开始循环
if($query->have_posts()) :
while ( $query->have_posts() ) :$query->the_post();
//loop 输出循环中的内容
endwhile;  //结束循环
wp_reset_query();//清除循环
endif;

 

woocommerce只调用促销产品

(促销产品包含指定的产品分类)代码以及注释如下

 

global $wp_query, $post, $woocommerce,$query_string;
$product_ids_on_sale    = wc_get_product_ids_on_sale();//获取所有的促销产品
$args = array(
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'product_cat',//此处参数指定为产品目录
'field' => 'id',//调用依据为产品目录id
'terms' => array( 11 ),//11为产品目录id
),
),
'posts_per_page' => 5,//一共需要调用的文章数量
'post_status'    => 'publish',//调用的文章为已经发布
'post_type'      => 'product',//调用的类型为产品(product)
'no_found_rows'  => 1,
'order'          => "ASC",//文章排序为时间正排序
'meta_query'     => array()//还可以使用post meta进行查询,这个和wordpress循环中使用一样
'post__in' =>$product_ids_on_sale//筛选出促销产品
);
//以上为循环的参数
$query= new WP_Query( apply_filters( 'woocommerce_products_widget_query_args', $args ) );//建立循环查询
//开始循环
if($query->have_posts()) :
while ( $query->have_posts() ) :$query->the_post();
//loop 输出循环中的内容
endwhile;  //结束循环
wp_reset_query();//清除循环
endif;

 

woocommerce调用产品自定义循环价格排序

代码以及详细注释如下

 

global $wp_query, $post, $woocommerce,$query_string;
$args = array(
'tax_query' => array(
'relation' => 'OR',
array(
'taxonomy' => 'product_cat',//此处参数指定为产品目录
'field' => 'id',//调用依据为产品目录id
'terms' => array( 11 ),//11为产品目录id
),
),
'posts_per_page' => 5,//一共需要调用的文章数量
'post_status'    => 'publish',//调用的文章为已经发布
'post_type'      => 'product',//调用的类型为产品(product)
'no_found_rows'  => 1,
'order'          => "ASC",//正排序,如果是逆排序这里参数为“desc”
‘orderby’=> 'meta_value_num',
'meta_key'     =>  '_price'//以自定义字段价格进行排序
);
//以上为循环的参数
$query= new WP_Query( apply_filters( 'woocommerce_products_widget_query_args', $args ) );//建立循环查询
//开始循环
if($query->have_posts()) :
while ( $query->have_posts() ) :$query->the_post();
//loop 输出循环中的内容
endwhile;  //结束循环
wp_reset_query();//清除循环
endif;

 

 

除了以上一些自定义循环和wordpress自定义调用有所区别之外,实际上大部分的调用都和wordpress自定义查询输出的循环使用方法是一样的。

 

上一篇:

下一篇:

文章评论

您好!请登录

取消回复
  1. 七想网络-小何 回复

    怎么调用出来,怎么我调用时产品详情页,不是产品


展开更多