Где реализована стандартная функция wp_head()?

24 мар. 2011 г., 14:01:37
Просмотры: 20.5K
Голосов: 3

Я пытаюсь настроить тему, и вижу, что в header.php вызывается "wp_head()". Я не могу найти реализацию этой функции в теме, поэтому предполагаю, что существует стандартная реализация, которая, например, применяет настройки цветовых опций, указанные на странице администратора.

Итак, мои связанные вопросы:

  • Где можно увидеть эту стандартную реализацию?
  • Можно ли отключить эту стандартную реализацию?
  • Можно ли отключить опцию "Настройки цвета" на экране администратора для темы?

Пожалуйста, не стесняйтесь указывать на соответствующую документацию, если это будет проще. Я просмотрел справочные страницы для функции wp_head() и соответствующего хука действия wp_head, но они, похоже, не предоставляют достаточно информации для решения вышеуказанных вопросов.

Спасибо.

0
Все ответы на вопрос 1
4

Где можно посмотреть стандартную реализацию этого?

Функция wp_head() просто запускает хук действия wp_head, который выполняет все callback-функции, добавленные к этому хуку с помощью add_action('wp_head','callback_function');. Так что здесь нет стандартной реализации.

Можно ли "отключить" эту стандартную реализацию?

Как мы уже сказали, поскольку нет стандартной реализации, вам нужно найти все add_action, которые подключаются к wp_head, и удалить их с помощью remove_action. Например, если есть такой add_action:

add_action('wp_head','callback_function');

то для его удаления просто добавьте

remove_action('wp_head','callback_function');

Можно ли отключить опцию "Цветовые настройки" в админке темы?

Я предполагаю, что ваша тема имеет какую-то панель настроек, позволяющую выбирать цветовые параметры. Отключение этой опции зависит от самой темы, но она должна быть в одном из файлов темы. Знание конкретной темы помогло бы дать более точный ответ.

Обновление

По умолчанию при вызове wp_head выполняются некоторые действия, и для их удаления можно использовать:

remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links', 2);
remove_action('wp_head', 'index_rel_link');
remove_action('wp_head', 'wlwmanifest_link');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'start_post_rel_link', 10, 0);
remove_action('wp_head', 'parent_post_rel_link', 10, 0);
remove_action('wp_head', 'adjacent_posts_rel_link', 10, 0);

Кроме этого, ищите add_action('wp_head' ... в файлах темы и плагинах.

24 мар. 2011 г. 14:41:37
Комментарии

спасибо за ответы. Я экспериментирую с темой Twenty Ten, которая была включена в скачанный мной WordPress. Если выполнить grep по "wp_head", находится только одно вхождение - вызов в header.php. Я не могу найти ни одного "add_action('wp_head')". Однако, похоже, что-то вызывается через wp_head(), так как в итоговом HTML появляется несколько тегов на месте wp_head(), включая CSS-стиль для body (реализующий мой выбор цвета в админке). Поэтому мой вопрос: где находится код, который это делает, и можно ли его обойти? Спасибо.

User User
24 мар. 2011 г. 14:50:27

@ephemeral: я обновил свой ответ

Bainternet Bainternet
24 мар. 2011 г. 15:04:56

@ephemeral: рад помочь.

Bainternet Bainternet
24 мар. 2011 г. 15:16:39

Прекрасно. Именно то, что мне было нужно. Я смог изменить тег <link ref="canonical" ..., который WordPress автоматически выводит с помощью вызова wp_head(), удалив стандартную функцию его вывода следующим образом: remove_action('wp_head','rel_canonical');. Затем я зарегистрировал свою собственную функцию: add_action('wp_head', 'my_custom_rel_canonical'); и добавил весь этот код в шаблон header.php, потому что мне нужно было сделать это там, а не в обычном шаблоне functions.php. Теперь я знаю, что это работает вполне хорошо. Спасибо, Bainternet.

racl101 racl101
22 февр. 2014 г. 00:45:48