如何将add_filter用于特定的页面模板?

Ste*_*ven 5 wordpress filter

在Wordpress中,我有一个名为的页面模板designers.php

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

我已尝试add_filterdesigners.php文件中使用,但无法正常工作:

add_filter('wp_title', 'set_page_title');

function set_page_title($title) { 
  global $brand;
  return 'Designer '.$brand['name'].' - '.get_bloginfo('name');  
}    
Run Code Online (Sandbox Code Playgroud)

我正在猜测add_filter必须位于插件内部或functions.php文件中。

我如何才能实现自己的目标?

更新
该函数从不触发,只要我使用即可wp_title。如果将其更改为init(用于测试),则会触发该功能。

那么为什么add_filternor也不适合wp_title呢?

kea*_*tch 4

你几乎是对的。过滤器必须驻留在 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;
}
Run Code Online (Sandbox Code Playgroud)