Переопределение метаданных WordPress OpenGraph и / или wp_head

Мы приобрели тему WordPress (Zerif Pro), и до сих пор она меня не впечатлила. Нашей команде нужно было добавить немало хакеров, чтобы веб-сайт вел себя правильно, поскольку тема хрупкая, настройки жестких кодов должны быть настраиваемыми и не использовать некоторые функции WordPress (в идеале мы бы выбросили эту тему и бойкотировали Themeisle для будущих тем, но мы зашли слишком далеко с веб-сайтом).

Одна из вещей, которую он использует, — это статическая титульная страница. Тема действительно создает статическую титульную страницу, но делает это поверх страницы «последних сообщений», а не делает это должным образом, как ожидал бы WordPress. Это означает, что когда мы выбираем опцию «Передняя страница отображает статическую страницу» в настройках WordPress, это нарушает тему. По этой причине мы сохранили главную страницу как есть и создали фиктивную страницу, которая будет содержать последние сообщения.

Однако теперь проблема заключается в том, что главная страница, несмотря на то, что она является титульной страницей, все еще почему-то считает, что это страница блога, что привело к некоторым другим проблемам (таким как ссылки «поделиться этой публикацией», появляющиеся на ней, которые мы скрыли через css) и совсем недавно неверная информация OpenGraph, о чем этот вопрос.

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

  • Переопределите wp_head (), чтобы исключить эти данные (я недостаточно знаком с логикой для этого)
  • Пусть платформа WP каким-то образом узнает, что главная страница не является постом в блоге (это предотвратит извлечение ненужных данных OpenGraph из последнего поста в блоге, опять же, я понятия не имею, как это сделать)
  • Настройте тему, чтобы внедрить ее «статический» контент на другую страницу, а не на страницу последних сообщений по умолчанию, где мы могли бы контролировать метаданные с помощью плагинов (опять же, понятия не имею, где эта логика выполняется или эта тема будет даже взаимодействовать)
  • Найдите, где метаданные OpenGraph заполняются, и переопределите их

Может кто-нибудь подсказать, как решить проблему (если у вас есть лучшее решение, чем 4, о котором я говорил выше, или какое-либо руководство по любому из этих 4, я был бы признателен). Если это поможет, вот все установленные на данный момент плагины:

  • Контактная форма для отправки по электронной почте
  • Easy Twitter Feed Widget
  • Избранные изображения с URL
  • Панель аналитики Google для WP
  • Сообщения на странице
  • SendGrid
  • Простой пользовательский CSS
  • Кнопки социальных сетей от Supsystic
  • TC Custom JavaScript
  • Typecase
  • Widget Wrangler
  • WP Client Logo Карусель
  • WPide

1

Решение

Этот ответ не был бы возможен без помощи Евуски, чей комментарий объяснил, как получить содержимое wp_headчто-то, о чем я раньше ничего не знал. Эти шаги могут быть использованы для удаления любой нежелательной логики из wp_headне только og логика, которая беспокоила меня. Вот что я сделал, чтобы решить эту проблему:

  1. Добавил следующий код в 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>';
    }
    } );
    
  2. Перезагрузил страницу, чтобы увидеть гигантскую свалку хеша, содержащую различные wp_head элементы, элементы отображаются в виде пар ключ / значение, а ключи — это имена, а значения — это массивы с дополнительными данными: [wp_oembed_add_discovery_links] => Array

  3. Собрал все ключи и вставил каждую запись в functions.php в следующем формате: remove_action('wp_head', 'wp_oembed_add_discovery_links')У меня было около 20 записей, я также удалил функцию из шага 1.

  4. Перезагрузил страницу и заметил, что og метаданные исчезли, как и многие другие <head> элемент. Чтобы быстро сузить до элемента-нарушителя, я использовал бинарный поиск, удалив половину элементов и проверив, имел ли он эффект. В течение 4 итераций я нашел виновника: fifu_add_social_tags

  5. Покидать remove_action('wp_head', 'fifu_add_social_tags'); логика в functions.php, чтобы предотвратить og теги от рендеринга, удалите все остальные строки.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]