Мета-теги description и keywords для WordPress

      Комментарии к записи Мета-теги description и keywords для WordPress отключены
Эта статья будет полезна тем, кто искал способы сделать уникальными мета-теги для отдельных страниц, записей и для главной страницы сайта на WordPress. Строго говоря, мета-тегов как таковых не существует. Существует тег meta, атрибут которого name, теоретически, может иметь любое значение, однако обычно используются общераспространённые и устоявшиеся значения, такие какdescription и keywords, о которых мы и поговорим и далее по традиции будем именовать мета-тегами.
По умолчанию в последних версиях CMS WordPress мета-теги "description" и "keywords" не используются в стандартных темах. Однако, несмотря на имеющееся мнение, что для релевантности и поисковой выдачи данные теги не важны, не стоит ими пренебрегать. Разработчики Google прямо утверждают, что ни keywords, ни description не используются при ранжировании результатов поиска. Однако разработчики Яндекса отмечают, что мета-тег keywords может учитываться при определении релевантности страницы, и, вероятно, влиять на её ранг. При этом и Google, и Яндекс используют description по его прямому назначению, т.е. для формирования краткого описания содержимого сайта или страницы. Так или иначе, основы SEO постулируют: если хотите улучшить позицию сайта, пишите правильные заголовки и описания в мета-теге description.
Если вы используете WordPress и хотите улучшить результаты отображения сайта в поисковых системах, то, наверное, когда-нибудь задавались вопросом, как сделать так, чтобы для отдельной страницы или записи можно было добавлять уникальные мета-теги descriptionи keywords. Этим вопросом я задался недавно, однако очень не хотелось устанавливать плагины. Хотелось чего-то простого и понятного. Занявшись поиском решения, я встретил полезные советы и вариант, частично решавший задачу добавления уникальных мета-тегов. На одном сайте предлагалось использовать возможность добавления произвольных полей к записи или странице, а также следующий код,

?
1
2
<meta name="description" content="<?php echo get_post_meta($post->ID, 'description', true); ?>" />
<meta name="keywords" content="<?php echo get_post_meta($post->ID, 'keywords', true); ?>" />

который необходимо вставить в файл header.php вашей темы между тегами

?
1
2
<head>
</head>

Как видим, это обычные мета-теги, за исключением того, что атрибут content содержит код php, который выводит возвращаемое WordPress-функцией get_post_meta значение произвольного поля в соответствии со значением ID текущей записи, информацию о которой содержит переменная $post. В данном случае произвольные поля это description и keywords.

Далее необходимо в консоли WordPress открыть вкладку Записи или Страницы, добавить новую запись или страницу соответственно или перейти к редактированию уже имеющихся. В правом верхнем углу консоли рядом с вкладкой Помощь располагается вкладкаНастройки экрана.

Открываем эту вкладку и ставим галочку напротив пункта Произвольные поля.

Теперь под областью редактирования записи у вас должен появиться раздел Произвольные поля.

В качестве имени поля введите description, а в качестве значения введите произвольный, необходимый вам текст. Обычно рекомендуемая длина текста для мета-тега description составляет 100-150 символов, но ничего страшного, если он не будет превышать 200 символов. Теперь добавьте второе поле keywords и в качестве значения перечислите через запятую ключевые слова. Их тоже не должно быть много, желательно в совокупности до 250 символов.

Таким образом у нас получились заполненные поля для конкретной записи или страницы, которые будут выводиться в качестве значения атрибута content для мета-тегов description и keywords каждый раз, когда будет открыта определённая запись или страница. Всё обстоит довольно просто, и кажется, что данный пример решает проблему добавления уникальных мета-тегов, однако возникает другая проблема: при переходе на главную страницу в качестве мета-тегов главной страницы будут отображаться мета-теги последней записи. Это мало кого устраивает, потому что предполагается, что мета-теги главной страницы должны быть статичны и описывать содержание сайта в целом, тогда как в этом случае они будут меняться в зависимости от последней добавленной записи.
Итак, проблему можно решить стандартными средствами WordPress. Нам понадобятся так называемые условные теги, которые позволяют изменять контент определённой записи или страницы, а также способ отображения этого контента.

  • is_front_page — проверяет, является ли главная страница страницей последних записей или статической страницей. В отличие от условного тега is_home, возвращает значение true вне зависимости от того, что установлено в настройках чтения в качестве главной страницы — статическая страница или страница последних записей.
  • is_home — проверяет, отображается ли в качестве главной страница последних записей. Возвращает true только для страницы последних записей.
  • is_single — проверяет, отображается ли в данный момент отдельная запись.
  • is_page — проверяет, отображается ли в данный момент отдельная страница.
  • is_category — проверяет, отображается ли в данный момент рубрика (категория).

Дополним конструкцию, которая выступает содержанием атрибута content

?
1
<?php echo get_post_meta($post->ID, 'description', true); ?>

и создадим условие с помощью условных операторов if и elsif и логического оператора or:

?
1
2
3
4
5
6
<?php
      if ( is_front_page() or is_home() ) {
    echo 'Мой сайт. Информация о сайте.';
} elseif ( is_single() or is_page() ) {
    echo get_post_meta($post->ID, "description", true);
} ?>

Эквивалентом записи оператора or могут выступать две вертикальные черты ||. Таким образом, мы обусловили вывод функцииget_post_meta только в том случае, если текущая страница это отдельная запись или отдельная страница. При этом атрибут contentбудет принимать значение, которое вы укажете в качестве произвольных полей к отдельной записи или странице. Для мета-тегаdescription на главной странице значение атрибута content будет неизменным, то есть тем, которое прописано в конструкции

if ( is_front_page() || is_home() ) {
echo 'Мой сайт. Описание моего сайта.';
}

Мы рассмотрели пример для мета-тега description, однако для keywords сниппет остаётся точно таким же, за исключением того, что поле "description" необходимо заменить на "keywords". Код для обоих мета-тегов следующий:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
<meta name="description" content="<?php
      if ( is_front_page() || is_home() ) {
    echo 'Мой сайт. Описание моего сайта.';
} elseif ( is_single() || is_page() ) {
    echo get_post_meta($post->ID, "description", true);
} ?>" />
<meta name="keywords" content="<?php
      if ( is_front_page() || is_home() ) {
    echo 'сайт, хороший сайт, мой сайт, наилучший сайт, интересный сайт, покер, куртизанки, бдсм';
} elseif ( is_single() || is_page() ) {
    echo get_post_meta($post->ID, "keywords", true);
} ?>" />

Есть мнение, что код для каждого мета-тега должен идти одной строкой. Возможно, это действительно более предпочтительно, но и данный вариант работоспособен, выбор за вами.

Мета-тег description для рубрик

Зачастую возникает необходимость использовать мета-тег description и для рубрик. Поскольку WordPress по умолчанию предусматривает описание рубрик, остаётся только вывести это описание в качестве значения атрибута content в текущей рубрике.

Для этого к конструкцииif ( is_front_page() || is_home() ) {
echo 'Мой сайт. Описание моего сайта.';
} elseif ( is_single() || is_page() ) {
echo get_post_meta($post->ID, "description", true);
}

добавим ещё одно условиеif (is_category()) {echo category_description();}

Теперь при переходе на страницу рубрики, которая имеет описание, значение атрибута content мета-тега description будет соответствовать описанию. Однако WordPress-функция category_description по умолчанию в качестве значения атрибута content почему-то выводит описание вместе с тегами

?
1
<p></p>

Эта особенность исправляется добавлением функции remove_filter, которая применяется к специфическим функциям term_descriptionи wpautop. Конечный вариант кода для формирования уникальных мета-тегов description и keywords для страниц и записей, а также уникального мета-тега description для рубрик, будет следующим:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<meta name="description" content="<?php
      if ( is_front_page() || is_home() ) {
    echo 'Мой сайт. Описание моего сайта.';
} elseif ( is_single() || is_page() ) {
    echo get_post_meta($post->ID, "description", true);
}
    remove_filter('term_description','wpautop');
    if (is_category()) {echo category_description();
} ?>" />
<meta name="keywords" content="<?php
      if ( is_front_page() || is_home() ) {
    echo 'сайт, хороший сайт, мой сайт, наилучший сайт, интересный сайт, покер, куртизанки, бдсм';
} elseif ( is_single() || is_page() ) {
    echo get_post_meta($post->ID, "keywords", true);
} ?>" />

Если вдруг всю статью читать утомительно, то вот краткий алгоритм действий:

  • 1) Скопируйте вышеприведённый код
  • 2) Откройте с помощью текстового редактора (например,Notepad++) файл header.php, он расположен в корневом каталоге вашей темы
  • 3) Вставьте код между тегами, желательно ближе к открывающему тегу
    ?
    1
    2
    3
    <head>
    </head>
  • 4) Всё. Теперь при редактировании новой страницы или записи не забывайте добавить два произвольных поля description иkeywords с уникальными значениями, это и будут мета-теги "description" и "keywords".

Для отображения мета-тега "description" для рубрики достаточно задать её описание.

Код актуален для версии WordPress 4.2.2, тестировался на PHP 5.4.27

Статья взята с сайта:https://romanzhivo.com/