Jump to content
campusboy

Раздельный вывод описания рубрик Wordpress для SEO

Recommended Posts

Всем привет. Не уверен, что название темы верное, но близко, я думаю. Итак, порой, чтобы продвинуть какую-то рубрику, к примеру, "Фильмы ужасов", нужно на её страницу вставить seo-текст. Такое я вижу частенько. Идет или простыня текста перед выводом списка фильмов или после. На мой взгляд, это не гуд. Приятнее было бы, если в 1 части (до списка фильмов) была "Зазывалочка", какой-то интересный небольшой текст, который захочется прочитать (увеличение ПФ), который призван начать выбор фильмов. Также надо для ПС набить ключевиков и небольшого абзаца маловато для этого, потому после списка фильмов желательно вывести ещё текста. С подобной целью столкнулся, готовых решений не искал, решил попрактиковаться. После разных вариантов пришел к тому, что выложу сейчас. Добавляется в function.php:

function manual_insert_description () {
 $description = term_description(); #Получаем описание категории/метки/произвольной таксономии (далее Рубрика)
 $separator = "<p><!--more--></p>"; #Пишем тег, который использовали в описании в месте разделения текста
 static $cnt_get_insert_description = 1; #Сколько раз вызывалась функция? Изначально 1 раз.
 # Если описание рубрики имеется и функция вызывалась не более 2 раз - начинаем обработку
 if ($description and $cnt_get_insert_description <= 2){
  list($description_start, $description_end) = explode($separator, $description); #Разбиваем текст на две части и помещаем в переменные
  /* Если имеется 1 часть описания и это первый вызов функции - выводим первую часть.
     Пример использования в шаблоне: <?php manual_insert_description ("Первая часть описания"); ?>  */
  if ($description_start and $cnt_get_insert_description == 1){
   echo $description_start; #Вывод
  }
  /* Если имеется 2 часть описания и это второй вызов функции - выводим вторую часть.
     Пример использования в шаблоне: <?php manual_insert_description ("Вторая часть описания"); ?>  */
  if ($description_end and $cnt_get_insert_description == 2){
   echo $description_end; #Вывод
  }
 $cnt_get_insert_description++;
 }
}

Код специально сделан максимально развернут и прокомментирован, чтобы и новички смогли его использовать. Предположение про SEO-эффект теоретическое.

 

После сохранения, нужно теперь в файле шаблона прописать эту функцию, к примеру, в category.php. Один раз там, где надо вывести 1 часть (к примеру перед циклом вывода постов), и второй раз там, где надо вывести вторую часть описания (например, после цикла вывода постов). В функцию manual_insert_description () можно ничего не передавать или вписать любой текст по желанию, чтобы было удобнее читать потом код. При её первом вызове выведется 1 часть описания, при втором - вторая, при третьем и далее - не произойдет ничего.

 

Функция тестировалась при следующих условиях и работает корректно:

  • Нет тега More
  • Текст - More - Текст
  • More - Текст
  • Текст - More
  • Нет описания

Тег можно заменить на любой, абсолютно любой текст, лишь задайте его в переменной $separator. Стоит предупредить, что если вписать, к примеру "wordpress", то функция будет искать именно эти совпадения и сохранять в переменные, что может привести к некорректному выводу. Вывод: используйте для разделения  какую-либо оригинальную неповторяющуюся нигде фразу.

 

Добавление описания рубрики (и подобных) происходит при её создании или редактировании. Вызывать функцию можно на странице рубрики, тега, произвольной таксономии, в общем там, где можно предусмотрено "описание" движком.
 
Эпилог: понимаю, что код тривиальный, но, возможно, кому поможет быстро решить вопрос, который встал у меня. Если есть вопросы, предложения, поправки - рад буду услышать. Кстати, пробовал вешать хуки, чтобы вообще нигде потом в шаблоне не вызывать функцию, но получается успешно лишь в случае наличия статей в рубрики. При других вариантах описания улетают, к примеру, в блок "Популярные записи". Ищу решение пока что.

Share this post


Link to post
Share on other sites

А что здесь говорить, от меня лайк, вещь очень нужная...

Share this post


Link to post
Share on other sites

Если сильно не заморачиваться с разбором полетов скрипта, можно глянуть как работает код?

Share this post


Link to post
Share on other sites

Если сильно не заморачиваться с разбором полетов скрипта, можно глянуть как работает код?

На этой странице категории видно grechkalife.ru/retseptyi . До вывода статей идет блок текста и после.

Share this post


Link to post
Share on other sites

Соглашусь, штука полезная. На сколько я понимаю, код для свежей версии ВП? Текст берется из соответствующего поля с описанием раздела, для 2,7 работать не будет?

Share this post


Link to post
Share on other sites

Соглашусь, штука полезная. На сколько я понимаю, код для свежей версии ВП? Текст берется из соответствующего поля с описанием раздела, для 2,7 работать не будет?

Функция term_description() доступна с версии WP 2.8.0, судя по её описанию.

Можно заменить на category_description(), которая доступна с версии WP 1.0.0, но её использовать только на страницах категорий.

Edited by campusboy

Share this post


Link to post
Share on other sites
Отличное решение, спасибо!

У меня на всех WP это реализовано через плагин Category SEO Meta Tags, соответсвтвенно, перед выводом списка стоит портянка Seo-текста, которая также выводится ввиде анонса через More

Share this post


Link to post
Share on other sites

Круто, спасибо. А это можно доработать для вывода описания категорий товаров в интернет магазинах на Woocommers?  Там описание выводится с помощью

<?php do_action( 'woocommerce_archive_description' ); ?>

Пробовал по аналогии переделать - не получилось? ТС, можешь помочь?

Share this post


Link to post
Share on other sites

 

Отличное решение, спасибо!
У меня на всех WP это реализовано через плагин Category SEO Meta Tags, соответсвтвенно, перед выводом списка стоит портянка Seo-текста, которая также выводится ввиде анонса через More

 

1.malahovnet а тебя не смущает, что плагин не обновлялся 3 года и надо патчить All in One SEO Pack?

2. не понял как именно ты там делишь описание на 2 части? Объясни, пожалуйста!

Share this post


Link to post
Share on other sites
2. не понял как именно ты там делишь описание на 2 части? Объясни, пожалуйста!

 

 

mastitis.ru/category/vidy-mastopatii кнопка подробнее открывает портянку, а кнопка скрыть закрывает портянку

 

Share this post


Link to post
Share on other sites

 

mastitis.ru/category/vidy-mastopatii кнопка подробнее открывает портянку, а кнопка скрыть закрывает портянку

 

Молодец, неплохо.

Но я всё-таки поищу решение, когда будет: текст описания 1 - анонсы - текст описания 2. Ну как здесь, только по возможности без вмешательства в фалы темы, а с помощью сниппетов.

Share this post


Link to post
Share on other sites

Добрый день! Это отличный способ!

Попробовал поставить, но у меня почему-то все описание выводится сверху. 

Вот код:
 

<?php
if ( ! defined( 'ABSPATH' ) ) { exit; }

get_template_part('inc/loop/posts/post');

/**
 * DFD core post item for archive page
 *
 * Generate post item content inside loop for posts archive page
 *
 * @author      dfd
 * @package     dfd_native theme
 * @version     1.0
 *
 */
?>
<div class="descup"><?php manual_insert_description ("Первая часть описания"); ?></div>
<?php
if(!class_exists('Dfd_post_archive')) {
	/**
	 * Post item content generator for posts archive page
	 *
	 *
	 * @class 		Dfd_post_archive extends Dfd_post
	 * @version		1.0
	 * @category	Class
	 * @author 		DFD
	 * @access		private
	 */
	class Dfd_post_archive extends Dfd_post {
		/** @var string Post item prefix. */
		public $prefix = 'post_archive';
	}
?>
<div class="descup"><?php manual_insert_description ("Вторая часть описания"); ?></div>
<?php		
}

А вот результат
Что я делаю не так? Заранее благодарю за ответ!

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...