Как вывести ключевые слова (keywords) и описание (description) в WordPress без плагина

Если сайт использует мета тег description, который описывают тематику поста и словосочетания (keywords), которые встречаются в материале, то поисковик сможет более правильно разместить вашу страничку в выдаче поиска.

К сожалению, по умолчанию инструмента для ввода keywords и description нет. Их можно легко добавлять установив соответствующие плагины. Но я не люблю их использовать, так как они могут сильно грузить движок. Даже если плагин использует всего несколько файлов, - все равно это небольшая, но нагрузка на движок. Ведь их нужно подгрузить, прочитать, обработать и т.д.

metainwordpressЯ предлагаю вам совершенно новый подход к добавлению мета тегов совершенно без плагинов. Добавлять keywords и description вы сможете к любому посту (записям) через редактор. Для категорий и одиночных страниц этот метод не работает. Но так как их очень мало - все-таки 90% это записи, то для них и будет работать этот код.

Установка кода

Откройте в папке темы вашего шаблона файл functions.php (поменяйте ему кодировку на UTF-8 без BOM) и вставьте сразу после первого <?php следующий код:

// подключаем функцию активации мета блока (my_extra_fields)
add_action('add_meta_boxes', 'my_extra_fields', 1);
function my_extra_fields() {add_meta_box( 'extra_fields', 'Дополнительные поля', 'extra_fields_box_func', 'post', 'normal', 'high' );}
// код блока Дополнительные поля
function extra_fields_box_func( $post ){?>
<p>Ключевые слова:<br> <input type="text" name="extra[metakeywords]" value="<?php echo str_replace('"',"'" , get_post_meta($post->ID, 'metakeywords', 1)); ?>" style="width:100%" /></p>
<p>Описание материала description:<br> <textarea type="text" name="extra[metadescription]" style="width:100%;height:50px;"><?php echo str_replace('"',"'" , get_post_meta($post->ID, 'metadescription', 1)); ?></textarea></p>
<input type="hidden" name="extra_fields_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />
<?php }
// включаем обновление полей при сохранении
add_action('save_post', 'my_extra_fields_update', 0);
/* Сохраняем данные, при сохранении поста */
function my_extra_fields_update( $post_id ){
if ( !wp_verify_nonce($_POST['extra_fields_nonce'], __FILE__) ) return false; // проверка
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return false; // выходим если это автосохранение
if ( !current_user_can('edit_post', $post_id) ) return false; // выходим если юзер не имеет право редактировать запись
if( !isset($_POST['extra']) ) return false; // выходим если данных нет
//extra[white] указываем поля (checkbox), могут не определиться и не удаляться
$need_check = array_map( 'trim', explode(',', $_POST['need_check']) );
foreach( $need_check as $val )
$_POST['extra'][$val] = @$_POST['extra'][$val];
// Все ОК! Теперь, нужно сохранить/удалить данные
$_POST['extra'] = array_map('trim', $_POST['extra']); // чистим все данные от пробелов по краям
foreach( $_POST['extra'] as $key=>$value ){
if( empty($value) ){delete_post_meta($post_id, $key); // удаляем поле если значение пустое
continue;}
update_post_meta($post_id, $key, $value); // add_post_meta() работает автоматически
}
return $post_id;}

Теперь, если вы откроете админку, то после записи увидите два новых поля для ввода keywords и description. После того, как вы их напишите и сохраните, они сохранятся в движке. Останется их только вывести в шапку. Для этого откройте файл вашего шаблона, где есть теги <head></head> (чаще всего это header.php) и вставьте между этими тегами следующий код:

<?php
//keywords и description на главной
if($_SERVER['REQUEST_URI'] == '/') { ?>
<meta name="keywords" content="ключевые слова на главной" />
<meta name="description" content="описание главной страницы" />
<?php } else {
//keywords и description на остальных страницах
if (get_post_meta($post->ID, 'metakeywords', 1) != "") echo '<meta name="keywords" content="'.get_post_meta($post->ID, 'metakeywords', 1).'" />'.PHP_EOL;
if (get_post_meta($post->ID, 'metadescription', 1) != "") echo '<meta name="description" content="'.get_post_meta($post->ID, 'metadescription', 1).'" />'.PHP_EOL;
} ?>

Здесь вы должны прописать один раз ключевые слова и описания для главной страницы вашего сайта, а для остальных - они буду автоматически выводиться из полей, которые вы заполнили в редакторе ваших постах.

Проверить как выводятся meta теги можно нажав Ctrl+U на вашем браузере. Откроется исходный код страницы, где вы увидите все добавленные теги.

Кстати, на этом сайте я уже использую свой же код и довольно успешно.

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

Ваш e-mail не будет опубликован. Обязательные поля помечены *


Введите капчу: