2011-02-13 65 views
3

在Wordpress中,我有一个页面模板designers.php如何为特定页面模板使用add_filter?

加载时,它读取slug以获取唯一ID,然后调用DB检索设计器信息。
我想使用这些信息来改变页面标题,使用标题标签中的设计器名称。

我已经在我的designers.php文件中使用add_filter试过,但它不工作:

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文件。

我该如何实现我想要做的?

UPDATE
功能是从来没有,只要我使用wp_title解雇。如果我将其更改为init(用于测试),则会触发此功能。

那么为什么add_filter也不适用于wp_title

+0

您使用的是哪个版本的Wordpress? – keatch 2011-02-13 22:36:29

回答

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; 
} 
+0

@keatch - 这不起作用。我在`functions.php`中放置了函数和`add_filter`,但函数没有被调用。在IF之前用'echo'TEST''进行测试。 – Steven 2011-02-13 17:42:40

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>