让标签存档页面显示相关商品

2024-02-01 13:50 小编

B2主题为文章和商品使用同一套标签功能,但是当我们点击标签的时候,标签的存档页面中只有文章,没有相关的商品。这个教程就来实现,让标签存档页面也显示相关的商品

内部绝密传真282期


标签存档显示相关商品

要实现这个功能,只需要将下面的代码添加到子主题的 functions.php 即可

/** * 让标签存档页面显示相关商品 * https://www.wpdaxue.com/docs/b2/b2-dev/tag-archive-args */function b2child_add_products_to_tag_archive( $args, $data ) {    if( isset($data['post_tag']) && !empty($data['post_tag']) ){                $args['post_type'] = array( 'post', 'shop' ); // 显示文章post和商品shop            }    return $args;}add_action( 'b2_post_loop_args', 'b2child_add_products_to_tag_archive', 20, 2 );


注意看第9行的数组array( 'post', 'shop' ),设置了显示文章和商品,如果你的网站还有其他文章类型也使用了标签post_tag,也可以添加进来。

标签存档显示相关商品的商品分类

仅仅添加上面的代码,我们就可以在标签存档中看到相关的商品,但是,你会发现无法显示【商品分类】,比如上面图片中的【WordPress收费主题】,还需要添加下面的代码:

/** * 在post文章类型增加shop商品的分类显示 * https://www.wpdaxue.com/docs/b2/b2-dev/tag-archive-args */function b2child_post_meta_filter( $meta, $post_id ) {    $post_type = get_post_type( $post_id );    if( $post_type == 'shop' ) { // 针对商品shop这个文章类型获取商品分类                $post_cats = get_the_terms( $post_id, 'shoptype' );        $cats_data = array();        foreach($post_cats as $cat){            if(isset($cat->term_id)){                $color = get_term_meta($cat->term_id,'b2_tax_color',true);                $color = $color ? $color : '#607d8b';                $link = get_term_link( $cat->term_id, 'shoptype' );                    $cats_data[] = array(                    'name'=>$cat->name,                    'color'=>$color,                    'link'=>$link                );            }        }        unset($post_cats);                $meta['cats'] = $cats_data;    }    return $meta;}add_filter('b2_get_post_metas', 'b2child_post_meta_filter', 10, 2);

到这里就可以了。


Tag: 页面
在线咨询 拨打电话

电话

13363039260

内部绝密传真282期

微信二维码