Как исключить страницы WooCommerce из карты сайта WordPress?

Стандартная функциональность 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;
		}
	}

Затем мы ищем страницы с их слагами: cartcheckout и my-account одновременно используя функцию get_page_by_path() для получения объекта страницы в базе данных. Здесь Вы можете добавить свои slug в массив.

Наконец, мы добавляем ID каждой страницы в post__not_in, чтобы исключить их из карты сайта.

	return $args;
}

Возвращаем измененный массив аргументов запроса.

Вот и всё. Надеюсь вам поможет. Если у вас есть одинаковые slug у поста, страницы и товара, то вам нужно добавить еще и проверку на тип поста.

Оставьте комментарий

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

Пролистать наверх