C, PHP, VB, .NET

Дневникът на Филип Петров


* Автоматичен meta description за WordPress

Публикувано на 28 април 2012 в раздел Общи работи.

По подразбиране WordPress не включва никакви meta description тагове в HTML кода. Представям ви лесен начин да генерирате автоматично такива за вашите страници и категории. За описание на страниците се взима първото изречение от текста в текущата статия, а за категориите тяхното описание зададено в WordPress. Кодът е малко "мръсен" и може да се изпипа, но ще опиша в коментари кое-как и защо е направено. Методът е следния - отворете header.php файла на вашата тема и добавете кода в <head> часта:

<?php
// В началото добавяме подзаглавието на сайта
$meta = get_bloginfo('description').': ';
// Проверява дали е страница или пост
if (is_singular()){
	// Намираме къде свършва първото изречение
	$pos = mb_strpos($post->post_content, ". ", 0, 'UTF-8');
	// Ако е намерено първо изречение, то го добавяме
	if($pos !==false)
	   $meta .= mb_substr($post->post_content, 0, $pos, 'UTF-8');
	// В противен случай взимаме целия пост
	else $meta .= $post->post_content;
}
elseif (is_category()){ // ако сме в категория с много статии
	// Добавяме описанието на категорията
	$meta .= category_description();
}
// Задължително премахваме всякакви HTML тагове
// и прекодираме кавичките и специалните символи
$meta = htmlentities(strip_tags($meta), ENT_QUOTES, 'UTF-8');
// Премахваме нови редове, табулации и празни интервали
// Поредици от празни интервали се получават често, когато
// имате много къс първи параграф в който няма точка.
$meta = str_replace(array("\n","\r","\t",'   ','  '),' ', $meta);
// Ако meta description е по-дълъг от 255, то го скъсяваме
if(mb_strlen($meta)>=255) $meta = mb_substr($meta, 0, 254);
// Отпечатваме мета тага
echo "<meta name='description' content='{$meta}' />\n";
?>

Предполагам, че може да се поправи и да стане доста по-прилично. Направих редица тестове и изглежда, че се справя добре с UTF-8 кодировка. За 404 и страници генерирани от търсене не се слага meta description. Ако някой забележи грешки или намери начин за оптимизация, нека сподели.

Някои по-нататъшни насоки:

  • Винаги започвайте статиите си с описателно първо изречение, като по възможност включвайте важната ключова дума;
  • Избягвайте да започвате с параграф с едно единствено изречение;
  • Стремете се първото ви изречение да е в рамките на 150 символа.

Колкото до мета тага за ключови думи (meta keywords) - там нещата са доста по-сложни. Автоматизираното разпознаване на добри ключови думи не е толкова проста работа. По-нататък евентуално ще завърша скрипт и за това.

 



Добави коментар

Адресът на електронната поща няма да се публикува


*