Альтернатива SEO плагинам своими руками

Большинство SEO плагинов обвешано уймой функций, которыми часть веб-мастеров даже не пользуются. Вашему вниманию предлагается сниппет, который является заменой большИм SEO плагинам. Если же вам нужно много функций и опций, то попробуйте плагин Yoast’s awesome SEO или же великий All in One SEO. В любом же другом случае, если вам нужно что-то простое и работоспособное, то нижеприведенный сниппет как раз для вас — внушительный кусок кода, который нужно добавить в ваш файл functions.php и всё.

Что делает этот код?

Он оптимизирует ваши страницы WordPress под поисковые системы, включая следующие мета-теги в секцию < head>:

  • Meta description – использует указанное вами мета описание, иначе берет первые 155 слов контента
  • Meta keywords – использует указанные вами мета кейвордс, иначе иначе геренирует их из тегов и рубрик
  • Meta Robots – включает meta robots index/follow или noindex/follow в зависимости от страницы
  • SEO title – использует указанный вами заголовок, иначе геренирует оптимизированный уникальный заголовок самостоятельно

Конечно же в SEO плагинах есть полезные вещи для ваших веб-страниц, и поэтому они так популярны. Проблема в том, что большинство SEO плагинов очень тяжелые, особенно для тех, кто привык делать все самостоятельно в коде, например работа с .htaccess, robots.txt, sitemap, и Google Analytics.

/* Basic WP SEO
	Использование: 
		1. добавляем этот код в functions.php
		2. меняем $default_keywords на ваши собственные
		3. добавляем <?php echo basic_wp_seo(); ?> в header.php
		4. тестируем результат

	Дополнительно: добавляем собственные description, keywords, и/или title
	в любую запись или страницу, используя следующие пользовательские поля:

		mm_seo_desc
		mm_seo_keywords
		mm_seo_title


	Для миграции с других SEO плагинов, замените их пользовательские поля
	на те, что указаны выше.
*/
function basic_wp_seo() {
	global $page, $paged, $post;
	$default_keywords = 'wordpress, plugins, themes, design, dev, development, security, htaccess, apache, php, sql, html, css, jquery, javascript, tutorials'; // настраиваем!
	$output = '';

	// description
	$seo_desc = get_post_meta($post->ID, 'mm_seo_desc', true);
	$description = get_bloginfo('description', 'display');
	$pagedata = get_post($post->ID);
	if (is_singular()) {
		if (!empty($seo_desc)) {
			$content = $seo_desc;
		} else if (!empty($pagedata)) {
			$content = apply_filters('the_excerpt_rss', $pagedata->post_content);
			$content = substr(trim(strip_tags($content)), 0, 155);
			$content = preg_replace('#\n#', ' ', $content);
			$content = preg_replace('#\s{2,}#', ' ', $content);
			$content = trim($content);
		} 
	} else {
		$content = $description;	
	}
	$output .= '<meta name="description" content="' . esc_attr($content) . '">' . "\n";

	// keywords
	$keys = get_post_meta($post->ID, 'mm_seo_keywords', true);
	$cats = get_the_category();
	$tags = get_the_tags();
	if (empty($keys)) {
		if (!empty($cats)) foreach($cats as $cat) $keys .= $cat->name . ', ';
		if (!empty($tags)) foreach($tags as $tag) $keys .= $tag->name . ', ';
		$keys .= $default_keywords;
	}
	$output .= "\t\t" . '<meta name="keywords" content="' . esc_attr($keys) . '">' . "\n";

	// robots
	if (is_category() || is_tag()) {
		$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
		if ($paged > 1) {
			$output .=  "\t\t" . '<meta name="robots" content="noindex,follow">' . "\n";
		} else {
			$output .=  "\t\t" . '<meta name="robots" content="index,follow">' . "\n";
		}
	} else if (is_home() || is_singular()) {
		$output .=  "\t\t" . '<meta name="robots" content="index,follow">' . "\n";
	} else {
		$output .= "\t\t" . '<meta name="robots" content="noindex,follow">' . "\n";
	}

	// title
	$title_custom = get_post_meta($post->ID, 'mm_seo_title', true);
	$url = ltrim(esc_url($_SERVER['REQUEST_URI']), '/');
	$name = get_bloginfo('name', 'display');
	$title = trim(wp_title('', false));
	$cat = single_cat_title('', false);
	$tag = single_tag_title('', false);
	$search = get_search_query();

	if (!empty($title_custom)) $title = $title_custom;
	if ($paged >= 2 || $page >= 2) $page_number = ' | ' . sprintf('Page %s', max($paged, $page));
	else $page_number = '';

	if (is_home() || is_front_page()) $seo_title = $name . ' | ' . $description;
	elseif (is_singular())            $seo_title = $title . ' | ' . $name;
	elseif (is_tag())                 $seo_title = 'Tag Archive: ' . $tag . ' | ' . $name;
	elseif (is_category())            $seo_title = 'Category Archive: ' . $cat . ' | ' . $name;
	elseif (is_archive())             $seo_title = 'Archive: ' . $title . ' | ' . $name;
	elseif (is_search())              $seo_title = 'Search: ' . $search . ' | ' . $name;
	elseif (is_404())                 $seo_title = '404 - Not Found: ' . $url . ' | ' . $name;
	else                              $seo_title = $name . ' | ' . $description;

	$output .= "\t\t" . '<title>' . esc_attr($seo_title . $page_number) . '</title>' . "\n";

	return $output;
}

Вот и все, просто введите ваши дефолтные ключевые слова и вызовите функцию, включив следующий тег в секцию ваших страниц (например, header.php):

<?php echo basic_wp_seo(); ?>

Имейте в виду, что этот код является заменой/альтернативой существующим решениям, поэтому он не переписывает или перехватывает ничего — вызывайте его в любом месте, где это нужно. Это также означает, что вы можете убрать любые существующие тегии < title> или < meta>, которые уже наверняка существуют в файле header.php вашей темы.

После того, как скрипт Basic WP SEO и тег в хидере загружены на сервер, посетите каждый тип страниц на своем сайте (например, single, index, archive, search, 404 и т.д.) и просмотрите исходный код для того, чтобы убедиться в корректности работы скрипта.

VN:F [1.9.22_1171]
Rating: 0.0/5 (0 votes cast)

Об авторе ADv

Занимаюсь разработкой сайтов и магазинов на WordPress. Оказываю платные помощь и консультации. Skype: advokat_b
Scroll To Top