WordPress术语链接过滤器

时间:2017-09-29 10:16:30

标签: php regex wordpress url-rewriting

我必须在术语链接上附加一个字符串,实际上我有这个结构:

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,则会出现菜单。

谢谢。

0 个答案:

没有答案