campusboy

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

13 posts in this topic

Всем привет. Не уверен, что название темы верное, но близко, я думаю. Итак, порой, чтобы продвинуть какую-то рубрику, к примеру, "Фильмы ужасов", нужно на её страницу вставить 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
Lagran likes this

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now

  • Recently Browsing   0 members

    No registered users viewing this page.