Влияние ЧПУ на продвижение. ЧПУ в WordPress

ЧПУ для сео

Что такое ЧПУ

ЧПУ — человекопонятный адрес страницы, одно из понятий почти любого чек-листа при поисковой оптимизации сайта. Суть в том, что при прочтении адреса, человек понимает, чего ему ждать на странице, или в возможности вручную откорректировать URL и перейти на уровень выше.
Что нас ждет на этой странице domen.ru/televizory/televizor_tcl_50ep660_ultra_hd_android/? Очевидно, 50-дюймовый смарт телевизор. А что притаилось здесь domen.ru/goods.php?id=188932? Наверное товар, но это не точно. Тогда что может находиться на странице с таким адресом domen.ru/?id=2455? Неизвестность. Звенящая неизвестность. Если конечно вы не находитесь на странице результатов поиска и не видите сниппет целиком. Например

Сниппет сайта без ЧПУ

ЧПУ — это также дополнительная возможность вставить ключевой запрос на страницу.

Ключевое слово в адресе страницы

И такой возможностью не стоит пренебрегать.

Подытожим — ЧПУ нужен для:

  1. Добавления ключевых запросов на страницу.
  2. Красивого отображения адреса страницы
  3. Предварительного понимания содержимого страницы

Варианты ЧПУ

У нас есть интернет-магазин, в котором надо настроить формирование URL. Можно использовать следующие вариации:

  • domen.ru/stiralnye_mashiny/stiralnaya_mashina_whirlpool_tdlr_55111_belyy/

В адрес включаются родительские категории товара и само название товара. Категорий может быть несколько или одна, в зависимости от пожеланий.

Для категорий адреса будут соответственно вроде domen.ru/stiralnye_mashiny/.

  • domen.ru/products/nabor-tarelok-lavande19-sm-4-sht

В адрес включается название товара, при этом категории не отображаются. Чаще используется дополнительное промежуточное значение в URL, чтобы указать на тип страницы. В лучшем случае адрес domen.ru/products будет отдавать страницу со всеми товарами или категориями. Вариант средний — редирект на страницу с товарами или категориям. Плохой вариант — страницы не будет, появится ошибка 404.

Для категорий адреса могут иметь вид domen.ru/product-category/skovorody-i-sotejniki, что не мешает им быть в топе поисковых систем.

Магазин на WordPress в топ Google

Именно второй тип характерен для магазинов на WordPress в связке с Woocommerce. Это обусловлено особенностями работы CMS.

Нужно ли настраивать ЧПУ на сайте?

Да,  определенно нужно. Это выглядит лучше, чем набор цифр и дает некоторые возможности в поисковой оптимизации. Стоит ли делать идеально структурированный URL? Желательно, но если это требует чрезмерных усилий — можно ограничиться частичными ЧПУ, это не будет ограничивающим фактором для поисковой оптимизации сайта.

ЧПУ в WordPress

Вы ищете способ, как самому настроить читаемые адреса на сайте, разработанном на CMS WordPress? Тогда этот раздел для вас. Мы собрали полезную информацию по этой теме, и надеемся что это поможет. Код работает на WordPress 5.3.2, для создания Custom Post Type и Custom Taxonomy использовался плагин CPT UI.

Удалить Category в URL

По умолчанию WordPress предоставляет несколько вариантов формирования ссылок на сайте

Варианты постоянных ссылок в WordPress

Для SEO наиболее оптимален последний вариант. При выборе его получается следующая структура адресов:

  • Запись — domen.ru/akcii/zagolovok/
  • Категория — domen.ru/category/akcii/

Чтобы убрать category из URL в WordPress есть несколько плагинов. Это могут сделать Webcraftic Clearfy, Remove Category URL, No Category Base (WPML), Yoast SEO. Также от category в адресе можно избавиться, вставив нужный код в файл function.php. Но эта статья не предназначена для этого, самый простой вариант — Yoast, тем более это лучший плагин для оптимизации на сегодня.

Удалить префикс Custom Post Type в URL

При создании нового типа записей в адрес записи добавляется slug — например, domen.ru/service/kupanie/ для нового типа записей Услуги с slug «service».

Как удалить slug у custom post type? Только через файл functions.php. И с оговоркой — метод работает если выбрать в настройках постоянных ссылок  “Название записи”.

Замените ‘service’ slug нужной custom post type.


function remove_post_slug( $post_link, $post, $leavename ) {
if ( 'service'!= $post->post_type || 'publish' != $post->post_status ) {
return $post_link;
}
$post_link = str_replace( '/' . $post->post_type . '/', '/', $post_link );
return $post_link;
}
add_filter( 'post_type_link', 'remove_post_slug', 10, 3 );
function parse_request_trick( $query ) {
if ( ! $query->is_main_query() || 2 != count( $query->query ) || ! isset( $query->query['page'] ) ) {
return;
}
if ( ! empty( $query->query['name'] ) ) {
$query->set( 'post_type', array( 'post', 'service', 'page' ) );
}
}
add_action( 'pre_get_posts', 'parse_request_trick' );

Источник: https://qna.habr.com/q/399390

Удалить префикс таксономии в URL

Для Custom Taxonomy по умолчанию в URL добавляется slug. Пример — domen.ru/service_type/platnaja/. Аналогично убрать slug из Custom Taxonomy можно путем внесения изменений в файл functions.php. Добавьте код ниже в functions.php, заменив “’service_type’” на свое значение. Аналогично, данный способ работает при настройках постоянных ссылок “Название записи”.

add_filter('request', 'true_smenit_request', 1, 1 );
function true_smenit_request( $query ){
$taxonomia_name = 'service_type'; // укажите название таксономии здесь, это также могут быть рубрики category или метки post_tag
// запросы для дочерних элементов будут отличаться, поэтому нам потребуется дополнительная проверка
if( $query['attachment'] ) :
$dochernia = true; // эту переменную задаём для себя, она нам потребуется дальше
$current_slug = $query['attachment']; // это ярлык данного термина/рубрики/метки
else:
$dochernia = false;
$current_slug = $query['name']; // как видите, здесь ярлык хранится в другой переменной запроса
endif;
$termin = get_term_by('slug', $current_slug, $taxonomia_name); // получаем элемент таксономии по ярлыку
if ( isset( $current_slug ) && $termin && !is_wp_error( $termin )): // если такого элемента не существует, прекращаем выполнение кода
// для страниц дочерних элементов код немного отличается
if( $dochernia ) {
unset( $query['attachment'] );
$parent = $termin->parent;
while( $parent ) {
$parent_term = get_term( $parent, $taxonomia_name);
$current_slug = $parent_term->slug . '/' . $current_slug; // нам нужно получить полный путь, состоящий из ярлыка текущего элемента и всех его родителей
$parent = $parent_term->parent;
}
} else {
unset($query['name']);
}
switch( $taxonomia_name ): // параметры запроса для рубрик и меток отличаются от других таксономий
case 'category':{
$query['category_name'] = $current_slug;
break;
}
case 'post_tag':{
$query['tag'] = $current_slug;
break;
}
default:{
$query[$taxonomia_name] = $current_slug;
break;
}
endswitch;
endif;
return $query;
}
// смена самой ссылки
add_filter( 'term_link', 'true_smena_permalink', 10, 3 );
function true_smena_permalink( $url, $term, $taxonomy ){
$taxonomia_name = 'service_type'; // название таксономии, тут всё понятно
$taxonomia_slug = 'service_type'; // ярлык таксономии - зависит от параметра rewrite, указанного при создании и может отличаться от названия,
// как например таксономия меток это post_tag, а ярлык по умолчанию tag
// выходим из функции, если указанного ярлыка таксономии нет в URL или если название таксономии не соответствует
if ( strpos($url, $taxonomia_slug) === FALSE || $taxonomy != $taxonomia_name ) return $url;
$url = str_replace('/' . $taxonomia_slug, '', $url); // если мы ещё тут, выполняем замену в URL
return $url;
}

Источник: https://misha.blog/wordpress/udalyaem-yarlyik-iz-url.html

Ссылка Custom Post Type с родительскими категориями без slug

Здесь Вас ждет разочарование — я не смог скомбинировать методы выше, чтобы получить идеальный вариант ЧПУ. Использование плагинов не решило проблему:

  • Custom Post Type Permalinks позволил сделать ЧПУ типа domen.ru/platnaja/za-rubli/kupanie, но этот адрес отдавал 404 ошибку, сама страница оставалась доступной по ссылке domen.ru/kupanie.
  • Permalink Manager Lite позволяет редактировать многое, но, к сожалению, не работал.

ЧПУ в WordPress можно доработать, чтобы они формировались правильно для сео, но иногда это бывает очень сложно.

Мы обрабатываем файлы cookie(куки), чтоб сделать сайт максимально удобным для вас. Продолжая пользоваться сайтом вы соглашаетесь с использованием файлов cookie(куки)