我为我的Woocommerce商店创建了一个自定义分类 book-author ,现在我正在尝试联合一个存档模板,以显示像普通Woo存档一样的前端。昨天我找到了这个代码,它帮助我在点击时将分类法从404错误中删除,但是它返回了一个带有 No product 通知的商店页面(虽然我点击了其中一个现有的分类法)
关键是, book-author 分类标准是小标签或“作者”的母亲,因此我需要修复此标记或找到一种方法使其对母亲具有普遍性书籍作者及其所有孩子/作者。
add_filter('template_include', 'team_set_template');
function team_set_template( $template ){
if(is_tax('book-author')) :
$taxonomy = 'book-author';
$term = get_query_var($taxonomy);
$prod_term = get_terms($taxonomy, 'slug='.$term.'');
$term_slug = $prod_term[0]->slug;
$t_id = $prod_term[0]->term_id;
$term_meta = get_option( "taxonomy_$t_id" );
$term_meta['bookauthor_access_pin'];
wc_get_template( 'archive-product.php' );
else :
wc_get_template( 'archive-product.php' );
endif;
}
我尝试复制archive-product.php
,将其重命名为taxonomy-book-author.php
并将其放入我的子主题文件夹中。这似乎是一种更好的方法,但没有结果 - 仍然是404。
book-author
是标记的原因,而不是类别,因为作者没有层次结构。我知道有这个插件(工具集),但他们将免费版本升级为付费版本,所以我试图找到一种更加手动和永久的方式。
先谢谢你们,伙计们。
答案 0 :(得分:0)
审核和尝试代码时出现了很多错误......
注意:过滤器挂钩功能需要始终返回。
在你的代码中:
- get_query_var($taxonomy)
将始终返回“slug”一词
- $term_meta['bookauthor_access_pin'];
没有用,我真的不知道是为了什么。
您说“
book-author
是标记的原因,而不是类别” ...如果您创建了自定义分类book-author
,这不是产品类别或产品标签(woocommerce自定义分类法)......
所以你应该尝试使用以下代码(没有任何保证,因为你没有提供所有相关代码,而且无法测试):
add_filter('template_include', 'team_set_template');
function team_set_template( $template ){
$taxonomy = 'book-author';
if( ! is_tax( $taxonomy ) ) return $template;
$term_slug = get_query_var($taxonomy);
if ( empty( $term_slug ) ) return $template;
$term = get_term_by('slug', $term_slug, $taxonomy );
if ( is_wp_error( $term ) ) return $template;
$term_id = $prod_term->term_id;
$term_meta = get_option( 'taxonomy_'. $term_id );
// $term_meta['bookauthor_access_pin']; // ???
return wc_locate_template( 'archive-product.php' );
}