【现成代码】woocommerce主循环外调用指定的产品分类

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

woocommerce的产品目录在wordpress数据库中的结构

woocommerce产品目录

如果你对wordpress有一定的了解,那么你就会知道,wordpress分类和标签在后台文章这个选项之下,并且标签和分类同属于terms这个数据。

而terms的关联数据表term_taxonomy中的值可以区分这些分类和标签,也就是说在数据库中他们所存放的数据是一类数据,通过一些特定的值来区分。

那么如果我们使用了woocommerce,woocommerce的产品分类也是存在于这个数据中的,因此搞清楚了数据的结构对于我们的调用是比较有帮助的。

默认的wordpress中term_taxonomy表使用taxonomy值进行区分,如果是标签 那么taxonomy值为tag,如果是文章分类目录为category

我们在使用了woocommerce之后,建立的分类目录taxonomy值为product_cat

因此如果我们需要在woocommerce主循环之外调动自定义产品分类的woocommerce产品时,这样的数据库结构就可以让你有清晰的思路进行调用了。

如图所示的数据库结构:

【现成代码】woocommerce主循环外调用指定的产品分类

woocommerce产品

而我们的woocommerce产品则是存放在post表中的,

post表在wordpress原生系统中会储存文章、页面、附件,如果使用了woocommerce ,则还会储存woocommerce产品、woocommerce订单以及woocommerce的优惠券。

而post meta表是储存一些自定义字段的,当我们启用woocommerce时,woocommerce产品中的各种参数如价格、库存等等数据都存放于post meta表中。

 

这样讲woocommerce的产品目录以及产品在数据库中的理解清晰,就非常容易去调用他们了,这些数据和调用wordpress默认文章和分类目录的使用是类似的。

 

woocommerce指定产品目录产品在主循环之外的调用

woocommerce指定自定义产品目录调用的作用很大,我们可以在首页、自定义专题页面以及侧边栏等等我们想要的位置调用我们所指定的产品。

他的调用和我们调用wordpress指定分类文章的方法类似,只不过需要在查询中加入woocommerce产品分类的判断。

同样 我们使用wordpress提供的WP_Query进行调用,以下是完整的代码以及代码注释:

 

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",//文章排序为时间正排序
'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的产品,可以根据分类目录的id判断输出对应数量的产品。

除此之外,你还可以根据wordpress自定义循环的方式使用post meta进行调用产品中的内容,woocommerce产品中 价格、库存、附件、推荐等等内容都存储与post meta中的,你还可以根据这些post meta进行判断输出,从而进行更多排序和更多种类的输出了。

 

上一篇:

下一篇:

文章评论

您好!请登录

取消回复
    展开更多