Сегодня тема относительно плагина All In One SEO Pack для тех пользователей, которые ведут сайты несколько посложнее чем блог. Уберем вывод мета тегов генерируемые плагином: description keywords title
, либо заменим эти теги на свои.
Генератором к написанию этой статьи послужило обращение одной из клиенток. У неё сайт кулинарной тематики. Однако, нередки случаи, когда на сайте публикуются, скажем так, не только рецепты, но и обыкновенные статьи, посты… Подобные обстоятельства частенько усложняют дело ведения сайта – возникают проблемы! Например, при организации микроразметки schema.org. Все дело в том, что теги (требования прописки) атрибутов микроразметки по каждой тематике статей несколько отличаются! Например: для кулинарных статей весьма желателен метатег description, а для обычных – (текстовых) нет!
Приступим…
…итак: клиентке требовалось в статьи рецептов к описанию – дескрипшн, которое кстати сказать, у нее выводится посредством плагина All In One SEO Pack, добавить соответственный атрибут микроразметки itemprop=«description».
Но как это сделать..? тем более, что со временем она планирует избавится от плагина, то есть организовать SEO сайта без него.
Немного посоветовавшись, мы решили сделать так:
а) все поля для заполнения description keywords и title пока что должны остаться на месте. То есть при редактировании статьи, они должны присутствовать…
б) внедрять теги микроразметки в генерируемые плагином name="description"
не будем, а решим задачу несколько иначе: как, описано ниже…
Суть идеи такова:
Для текста рецептов выведем для name="description"
несколько предложений из начала статьи. А для микроразметки schema.org с атрибутом itemprop=«description» возьмём текст из описания – из поля description плагина SEO Pack (хотя можно взять более релевантный текст и из поля “Отрывок” /если используете/, кому как угодно).
Таким образом исключим дублирование контента и оптимизируем SEO параметры.
Для того, чтобы решит возникшую задачу, нам требуется отключить для отдельных записей is_single()
сгенерированные плагином метатеги name="description"
из исходного кода. А на его место добавить свой кастомный…
на скрине ниже показан сгенерированный плагином метатег – его и нужно убрать, а вместо него добавить свой:
как убрать из исходного кода мета тег description плагина All In One SEO Pack
Кстати говоря, посредством данного кода ниже, возможно убрать и другие мета теги SEO Pack, например keywords и пр.
Убираем мета-тег name="description"
, который генерирует плагин: добавляйте показанный ниже код в файл функций (functions.php) активной темы или свой плагин… либо дочерний шаблона)
/*удаляем метаполя All in One SEO Pack descriptions ДЛЯ всех записей*/
add_action('get_header', 'clean_ats_meta_descr', 100);
add_action('wp_footer', function(){ ob_end_flush(); }, 100);
function remove_ats_meta_descr($html) {
$pattern = '/<meta name(.*)=(.*)"description"(.*)>/i'; // это удалит поле description
$html = preg_replace($pattern, '', $html, 1);
return $html;
}
function clean_ats_meta_descr($html) {
if ( is_single()) { // is_singular запретим только в записях = можно поставить is_single()
ob_start('remove_ats_meta_descr');
} }
/*удаляем метаполя All in One SEO Pack descriptions ДЛЯ всех записей*/
Уберем метатег только со страниц записей! в коде есть пояснительные комментарии!
В плане полезного:
All in One SEO как закрыть страницу пагинации в noindex
Внедряем микроразметку Schema.org в статьи различной тематики или эта статья по тегам микроразметки schema.org.
Что такое Open Graph? как добавить микроразметку по протокол Open Graph – без плагинов!
Метатег description убран. Теперь нам нужно добавить вместо него свой собственный.
Получится примерно так:
как к статье добавить мета поле description
Чтобы добавить кастомный мета-тег description пропишем к себе следующий код:
/*выведем свои мета - description ДЛЯ всех записей*/
add_action('wp_head', 'too_ats_meta_desc', 2); // 2 приоритет вывода выше/ниже
function too_ats_meta_desc() {
global $post; //
if (is_single()) {
$maxchars = 160; // число выводимых символов
$text = strip_tags( get_the_content() );
$atsdecr = mb_substr( $text, 0, $maxchars );
echo '<meta name="description" content="' . $atsdecr . '" />'; // выводим данные
} }
/*выведем свои мета - description ДЛЯ всех записей*/
Число выводимых символов для описания ( в данном случае для itemprop="description"
) задается в:
$maxchars = 160;
Важно понимать вот что, этот вариант выборки количества выводимых на экран символов get_the_content
не совсем симпатичен… потому как обрезка текста осуществляется по количеству символов – может срезать информацию на полуслове.!.
Организацию вывода дескрипшн статьи возможно сделать и как-то иначе… Вариантов достаточно…
добавляем в статьи рецептов itemprop=”description” – schema.org/Recipe
Далее… всё, что остается сделать, так это вывести в статье рецептов описание (дескрипшн) и отправить его в жерло роботу посредством атрибутов микроразметки itemprop="description"
!
Добавляем (в раздел Рецепты: itemscope itemtype="http://schema.org/Recipe"
) такую примерно строку в файл post-single.php (или какой-то подобный) который отвечает за формирование страницы записи.
<div style="display:none" itemprop="description"><?php echo get_post_meta($post->ID, '_aioseop_description', true); ?></div>
Внимание: после одного из обновлений плагина изменились имена пр. полей: _aioseop_description
на: _aioseo_description
И: _aioseop_title
на: _aioseo_title
…в коде примерное место вставки кода такое (естественно – ваш шаблон может отличаться – я показываю суть вопроса):
На этом у меня всё…
Если возникли вопросы, пишите, помогу…
Как использовать условные теги: пример на странице пагинации – закрываем в noindex,follow
mihalica.ru !