Многострадальный WordPress иногда способен заставить задуматься. Например, вносить изменения в тему напрямую неправильно (за исключением тех случаев, когда она самописная и за обновления отвечаете лично), рекомендуется вносить правки посредством дочерней темы. Соответственно, если в дочерней теме создать файлы index.php, header.php и тому подобное, то они не будут обновляться вместе с родительской темой.
Соответственно, за актуальностью кода придётся следить самому. А ведь метатеги вносятся в раздел , из-за чего многие прибегают к редактированию файла header.php. Вариант не самый правильный, да и не всегда это возможно, некоторые темы могут быть сделаны нестандартно и содержание файла будет выглядеть так.
Вносим метатеги в шапку
В WordPress файл functions.php даёт широкие возможности внесения изменений в тему, достаточно использовать правильные хуки и можно подключить многие вещи. Теперь поэтапно вносим нужные метатеги. Например, верификацию от Search Console Google и Яндекс.Вебмастер.
Если дочерней темы нет, то подключите ее и настройте. В противном случае с обновлением могут слететь все пользовательские коды, уверен, вам это не нужно. В дочерней теме создайте файл functions.php и внесите туда такой код:
add_action( 'wp_head', 'bashka_meta' );
function bashka_meta() {
?>
<meta name="google-site-verification" content="dannye_ukazaniye_konsolyu" />
<meta name="dannye_ukazaniye_webmasterom" content="">
<?php
}
Готово, я только что подключил метатеги в раздел <head> посредством файла функций.
Теперь стоит поэтапно расписать, как это работает. Я желаю, чтобы вы поняли, а не тупо скопировали, уверен, вы желаете того же.
Начнём с хуков:
add_action( 'wp_head', 'bashka_meta' );
Функция add_action отвечает за создание действия. В данном случае, за дальнейшее выполнение функции bashka_meta(). Хук wp_head отвечает за место, где действие будет выполняться, то бишь в разделе <head> </head>. И сама функция. Придумывайте изощренное название, чтобы вероятность того, что где-то встретится другая функция с таким же названием, была предельно мала. В случае, если попадётся функция с аналогичным названием, произойдёт конфликт и сайт не сможет работать до его устранения. Я назвал baschka_meta, маловероятно, что где-то такое попадётся.
Далее идёт строка:
function bashka_meta() {
?>
Мы создали действие, которое запускает выполнение функции, но теперь необходимо задать код самой функции, фактически, указать, что должно быть сделано. Именно за это отвечает function. ?> — данное сочетание знаков закрывает выполнение блока PHP, если этого не сделать, то случится конфликт.
Далее следует такой блок кода:
<meta name="google-site-verification" content="dannye_ukazaniye_konsolyu" />
<meta name="dannye_ukazaniye_webmasterom" content="">
<meta name> — HTML-тег, пришлось закрыть блок PHP именно для того, чтобы выполнялся обычный html. Как видите, я указал только два метатега. Можно указать любое количество. Ровно столько, сколько вам необходимо.
И теперь завершение. Так как функция у нас на php и её требуется завершить, добавляем эти строки:
<?php
}
<?php — данное сочетание снова открывает блок PHP и запускает выполнение кода. Скобочка завершает выполнение функции. Все, код будет полностью работоспособен.
Всё просто
Даже очень. Конечно, я рекомендую все эти функции выносить в отдельный плагин, но это заслуживает отдельной темы. На самом деле, создать свой плагин довольно просто и вы не будете зависеть от темы. Со сменой не пропадёт никакой пользовательский код. Впрочем, можете использовать functions.php, он способен выполнить нужную задачу.
Ну ты красава 2дня бился над проблемой содержащей, в том числе и вставку мета на отдельную страницу. Всё не росло. а тут эта статья с подробным распилом чё по чём. Особо обновило мозх сначала закрытие пхп, а потом открытие. Поначалу не мог понять. Теперь вижу, что некоторые ранее писаные коды в functions.php не работают именно поэтому
Спасибо за отклик. Рад, что сумел помочь, как-нибудь расширю статью и объясню, как добавлять meta на отдельные страницы.
Как добавить только на главную?
Заключите в:
Например:
Очень актуально с новой версией 5.9, всю голову сломал, а оказалось все так просто, спасибо огромное!
Здравствуйте. А как заменить родительский метатег? Мне надо поменять theme-color в дочерней теме, а ваш способ добавляет его к существующему и видимо менее приоритетен – не работает
К метатегам theme-color навряд ли имеет отношение. Вам нужно изменить цвет в стилях, например, в файле style.css, если стиль не применяется, то, возможно, он меняется или назначается с помощью javascript, в таком случае нужно найти файл, который влияет, а потом его исправить.