Мы приобрели тему WordPress (Zerif Pro), и до сих пор она меня не впечатлила. Нашей команде нужно было добавить немало хакеров, чтобы веб-сайт вел себя правильно, поскольку тема хрупкая, настройки жестких кодов должны быть настраиваемыми и не использовать некоторые функции WordPress (в идеале мы бы выбросили эту тему и бойкотировали Themeisle для будущих тем, но мы зашли слишком далеко с веб-сайтом).
Одна из вещей, которую он использует, — это статическая титульная страница. Тема действительно создает статическую титульную страницу, но делает это поверх страницы «последних сообщений», а не делает это должным образом, как ожидал бы WordPress. Это означает, что когда мы выбираем опцию «Передняя страница отображает статическую страницу» в настройках WordPress, это нарушает тему. По этой причине мы сохранили главную страницу как есть и создали фиктивную страницу, которая будет содержать последние сообщения.
Однако теперь проблема заключается в том, что главная страница, несмотря на то, что она является титульной страницей, все еще почему-то считает, что это страница блога, что привело к некоторым другим проблемам (таким как ссылки «поделиться этой публикацией», появляющиеся на ней, которые мы скрыли через css) и совсем недавно неверная информация OpenGraph, о чем этот вопрос.
Метаданные, введенные на титульную страницу (которая на самом деле является последней страницей сообщений, неправильно оформленной темой на титульной странице), соответствуют данным нашего последнего сообщения. Я предполагаю, что это генерируется wp_head()
, но не могу определить, откуда берутся эти метаданные (похоже, тема не переопределяет wp_head()
и мы не используем какие-либо плагины SEO, которые будут вводить og
мета-данные). На данный момент, вот решения, о которых я думаю:
Может кто-нибудь подсказать, как решить проблему (если у вас есть лучшее решение, чем 4, о котором я говорил выше, или какое-либо руководство по любому из этих 4, я был бы признателен). Если это поможет, вот все установленные на данный момент плагины:
Этот ответ не был бы возможен без помощи Евуски, чей комментарий объяснил, как получить содержимое wp_head
что-то, о чем я раньше ничего не знал. Эти шаги могут быть использованы для удаления любой нежелательной логики из wp_head
не только og
логика, которая беспокоила меня. Вот что я сделал, чтобы решить эту проблему:
Добавил следующий код в functions.php, как предложил Jevuska:
add_action( 'wp', function () {
global $wp_filter;
if ( isset( $wp_filter['wp_head'] ) ) {
echo '<pre>';
print_r($wp_filter['wp_head']);
echo '</pre>';
}
} );
Перезагрузил страницу, чтобы увидеть гигантскую свалку хеша, содержащую различные wp_head
элементы, элементы отображаются в виде пар ключ / значение, а ключи — это имена, а значения — это массивы с дополнительными данными: [wp_oembed_add_discovery_links] => Array
Собрал все ключи и вставил каждую запись в functions.php в следующем формате: remove_action('wp_head', 'wp_oembed_add_discovery_links')
У меня было около 20 записей, я также удалил функцию из шага 1.
Перезагрузил страницу и заметил, что og
метаданные исчезли, как и многие другие <head>
элемент. Чтобы быстро сузить до элемента-нарушителя, я использовал бинарный поиск, удалив половину элементов и проверив, имел ли он эффект. В течение 4 итераций я нашел виновника: fifu_add_social_tags
Покидать remove_action('wp_head', 'fifu_add_social_tags');
логика в functions.php, чтобы предотвратить og
теги от рендеринга, удалите все остальные строки.
Других решений пока нет …