我必须在术语链接上附加一个字符串,实际上我有这个结构:
domain.com/term_1/sub_term_1
我想在'sub_term_1'之后追加一些东西:
domain.com/term_1/sub_term_1/my_custom_text
所以我认为这应该可以解决问题:
add_filter('term_link', 'term_link_filter', 10, 3);
function term_link_filter( $url, $term, $taxonomy ) {
return $url . '/mu_custom_text';
}
现在 get_term_link(term_id,'taxonomy_slug')会返回我想要的正确网址,但会重定向到404错误页面。
请帮助,我的目标是在术语链接的任何地方附加自定义字符串?我迷路了,直到昨天才用Google搜索,但没有成功。
注意:自定义文字在会话中是动态的,因此无法从信息中心追加
========更新======== 我找到了解决方案:
首先我创建了自定义重写
function create_new_url_querystring() {
add_rewrite_rule(
'category/(.+?)/([^/]*)/?$','index.php?product_cat=$matches[1]&custom_string=$matches[2]','top'
);
}
add_action('init', 'create_new_url_querystring');
Secondo我追加来自术语网址的字符串
add_filter('term_link', 'term_link_filter', 10, 3);
function term_link_filter( $url, $term, $taxonomy ) {
if( $taxonomy == 'product_cat' ) {
return $url.'/'.custom_string;
}
return $url;
}
所以这个网址正在运行:
domain.com/term_1/sub_term_1/my_custom_text
这也是: domain.com/term_1/sub_term_1/sub_term_two/my_custom_text
但是现在我为多个'sub_term'提出了另一个问题,我的导航菜单没有出现。如果我在网址上只有一个sub_term,则会出现菜单。
谢谢。