Стандартная функциональность WordPress позволяет создать карту сайта сайта автоматически. Карта сайта представляет собой файл, в котором содержится список всех страниц сайта, а также другие важные данные для поисковых роботов. Это помогает поисковым системам индексировать сайт и делает его более доступным для поискового запроса.
Если вы используете WooCommerce, возможно, вы не захотите включать страницы корзины и оформления заказа в карту сайта. В этом случае, вам нужно их исключить. На известном сайте wp-kama я нашел код, который исключает страницы, посты и т.д., но по ID. А мне нужно было по slug (для меня это проще). Ниже мы рассмотрим, как это сделать.
Шаг 1: Откройте файл functions.php
Вам нужно открыть файл functions.php вашей активной темы. Если вы пользуетесь дочерней темой, то вам нужно открыть functions.php дочерней темы.
Шаг 2: Добавьте код
Добавьте следующий код в файл functions.php:
add_filter( 'wp_sitemaps_posts_query_args', 'wplife_sitemaps_posts_query_args', 10, 1 );
function wplife_sitemaps_posts_query_args( $args ){
if( ! isset( $args['post__not_in'] ) ){
$args['post__not_in'] = array();
}
foreach( [ 'cart','checkout','my-account' ] as $slug ){
$post = get_page_by_path( $slug, OBJECT, 'page' );
if ( $post ) {
$args['post__not_in'][] = $post->ID;
}
}
return $args;
}
Этот код исключает страницы корзины, аккаунта и оформления заказа из карты сайта. Он работает путем проверки, является ли текущий пост страницей корзины, аккаунта или оформления заказа, и, если да — помечает URL-адрес для исключения из карты сайта.
Шаг 3: Сохраните файл functions.php
После того, как вы добавили код в functions.php, сохраните файл.
И, вот, вы исключили страницы корзины, аккаунта и оформления заказа из карты сайта вашего сайта на WordPress.
Заключение
Исключение страниц корзины, аккаунта и оформления заказа из карты сайта WordPress — важная функция для магазинов WooCommerce. Она помогает улучшить SEO-оптимизацию и сделать сайт более доступным для поисковых роботов. С помощью простого фильтра WordPress вы можете исключить эти страницы из карты сайта вашего сайта в WordPress.
Распишу подробнее из чего состоит код:
add_filter( 'wp_sitemaps_posts_query_args', 'wplife_sitemaps_posts_query_args', 10, 2 );
Этот фильтр вызывает функцию wplife_sitemaps_posts_query_args
, которая принимает аргумент: $args
, массив существующих аргументов запроса.
function wplife_sitemaps_posts_query_args( $args, $post_type ){
Аргументы запроса передаются в функцию, чтобы можно было исключить несколько страниц из карты сайта по их слагу.
if( ! isset( $args['post__not_in'] ) ){
$args['post__not_in'] = array();
}
Убедимся, что в массив post__not_in
добавлены все исключаемые страницы, прежде чем мы идем дальше, в случае если этот параметр уже установлен, мы ничего не делаем.
foreach( [ 'cart','checkout','my-account' ] as $slug ){
$post = get_page_by_path( $slug, OBJECT, 'page' );
if ( $post ) {
$args['post__not_in'][] = $post->ID;
}
}
Затем мы ищем страницы с их слагами: cart
, checkout
и my-account
одновременно используя функцию get_page_by_path()
для получения объекта страницы в базе данных. Здесь Вы можете добавить свои slug в массив.
Наконец, мы добавляем ID каждой страницы в post__not_in
, чтобы исключить их из карты сайта.
return $args;
}
Возвращаем измененный массив аргументов запроса.
Вот и всё. Надеюсь вам поможет. Если у вас есть одинаковые slug у поста, страницы и товара, то вам нужно добавить еще и проверку на тип поста.