假设我有一个post标签,其term id为480
,我试图使用add_rewrite_rule
创建一个重定向,到目前为止我做到了:
function term_custom_redirect()
{
$referer_url = "en/tag/a-lange-sohne";
add_rewrite_rule(
"^$referer_url/?$",
'index.php?p=' . 480,
"top"
);
flush_rewrite_rules();
}
add_action('init', 'term_custom_redirect', 10, 0);
字符串
代码应该为项id 480
添加一个重写,所以当用户访问下面的url:example.com/en/tag/a-lange-sohne/
时,应该加载与480
相关联的标记页面,但是我得到了404,即使我在最后添加了flush_rewrite_rules
(我也保存了后端的永久链接)。
- 更新:*
这里的主要问题是,一些帖子标签包含在URL -en
中,我想删除它,例如:
example.com/en/tag/a-lange-sohne-en/
型
应成为:
example.com/en/tag/a-lange-sohne/
型
分类法是post_tag
,并且是wordpress中的默认分类法,所以我没有创建任何新的分类法:
的数据
我认为我最初的解决方案会工作,但由于某种原因没有。我还尝试了一个新的钩子,应该处理这项工作:
function update_term_link($permalink, $tag)
{
if (strpos($permalink, '-en') !== false) {
$permalink = str_replace('-en', '', $permalink);
}
return $permalink;
}
add_filter('tag_link', 'update_term_link', 10, 2);
型
但它也不起作用(我总是刷新固定链接)。
注意:使用tag_link
钩子,我可以正确地看到新的永久链接结构,它根本无法访问404错误。
1条答案
按热度按时间a14dhokn1#
这应该是可行的:
字符串
这里我们使用
tag
参数来要求WordPress按slug查找标签存档页面。该函数使用get_term()通过ID获取标签(在本例中,ID为
480
),然后我们可以使用该信息检索标签对象,包括其slug。这很好,因为如果标签被重命名,它不会影响我们的代码,因为ID将保持不变。的数据