在Wordpress中,我有一个名为designers.php
的页面模板。
加载时,会读取slug
以获取uniqe ID,然后调用DB以检索设计器信息。
我想使用此信息来改变页面标题,使用标题标记中的设计器名称。
我已尝试在add_filter
文件中使用designers.php
,但它无效:
add_filter('wp_title', 'set_page_title');
function set_page_title($title) {
global $brand;
return 'Designer '.$brand['name'].' - '.get_bloginfo('name');
}
我猜测add_filter
必须位于插件内或functions.php
文件中。
我如何实现我的目标?
更新
只要我使用wp_title
,该函数就不会被触发。如果我将其更改为init
(用于测试),则会触发该函数。
那么为什么add_filter
也不适用于wp_title
?
答案 0 :(得分:3)
你几乎是对的。过滤器必须位于function.php中,并调用以修改标题。您可以有条件地添加过滤器。使用此函数is_page_template()确定wordpress是否呈现模板
尝试修改你的功能:
add_filter('wp_title', 'set_page_title');
function set_page_title($title) {
global $brand;
if (is_page_template('designer.php'))
return 'Designer '.$brand['name'].' - '.get_bloginfo('name');
else
return $title;
}
答案 1 :(得分:1)
首先,add_filter
必须位于插件内或functions.php
文件中。
然后,也许您必须设置过滤器的优先级:
add_filter('wp_title', 'set_page_title',1);
function set_page_title() {
global $brand;
return 'Designer '.$brand['name'].' - '.get_bloginfo('name');
}
并查看<title>
主题中的header.php
元。
<title><?php wp_title(); ?></title>