我正在创建一个插件,在其中检查页面url中传递的参数,然后使用这些参数的值来更改标题、元标记和其他一些SEO更改。但我在尝试将操作和过滤器正确地结合起来以实现这一点时遇到了问题。下面是我正在做的一些事情的示例。首先,我注册在url中传递的变量
add_action(\'init\', \'register_tag\');
function register_tag() {
add_rewrite_tag(\'%address%\',\'([^&]+)\');
}
然后,我从$wp\\u查询中获取变量,并设置标题和其他内容。 add_filter(\'wp_head\', \'seo_features\');
function seo_features() {
global $wp_query,$post,$address;
$address = $wp_query->query_vars[\'address\'];
if ($address) {
$post->post_title = $address;
add_filter(\'wp_title\', set_title);
add_filter(\'wpseo_title\', set_title);
remove_action(\'wp_head\', \'rel_canonical\');
}
}
function set_title($title) {
global $address;
return $address;
}
但我认为你做不到add_action()
或add_filter()
来自add_filter()
?我不知道如何正确地执行此操作。我必须使用add_action("init")
注册标记(并使用添加相关重写规则add_rewrite_rule()
). 但我似乎只能得到变量的值$address
从…起$wp_query
从add_filter
呼叫尝试在没有筛选器/操作的情况下访问它是行不通的,因为调用它太早了。
你知道我应该按什么顺序做吗?