Как я могу использовать add_filter для определенного шаблона страницы? - PullRequest
4 голосов
/ 13 февраля 2011

В Wordpress у меня есть шаблон страницы с именем designers.php.

. При загрузке он читает slug, чтобы получить уникальный идентификатор, а затем вызывает БД для получения информации о дизайнере.
Я хочучтобы использовать эту информацию для изменения заголовка страницы, используя имя дизайнера в теге title.

Я пытался использовать 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?

Ответы [ 2 ]

3 голосов
/ 13 февраля 2011

Вы почти правы.Фильтр должен находиться в 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 голос
/ 05 декабря 2012

Прежде всего 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...