Влияние ЧПУ на продвижение. ЧПУ в 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 можно доработать, чтобы они формировались правильно для сео, но иногда это бывает очень сложно.