Нагрузка от поисковых ботов на Wordpress + WooCommerce

У владельцев больших магазинов, созданных на этой популярной связке, могут возникнуть серьёзные проблемы индексацией поисковыми роботами.
Это связанно с генерацией кнопки «Купить» в списке товаров. Стандартно это выглядит так:
HTML код кнопки такой:
Данная кнопка добавляет товары через Ajax, но разработчики решили продублировать функцию помещения товара и с помощью обычной ссылки. Проставленный тег rel=”nofollow” никак не мешает нашим роботам ходить и помещать товары в свои корзины. Очень важный момент при этом, что данные страницы не кэшируются, что вызывает огромную нагрузку на сервер.
Что же делать?
Самое простое решение, это добавить в robots.txt строчку:
Disallow: *?add-to-cart
Если же уже боты напали на сайт, то можно убрать эту ссылку вовсе. Код её должен находится по адресу:
\wp-content\themes\ВАША_ТЕМА_WP\woocommerce\loop\add-to-cart.php
Если файла нет, тогда его нужно скопировать из папки плагина:
\wp-content\plugins\woocommerce\templates\loop\add-to-cart.php
Стандартное содержимое файла:
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
global $product;
echo apply_filters(
'woocommerce_loop_add_to_cart_link', // WPCS: XSS ok.
sprintf(
'<a href="%s" data-quantity="%s" class="%s" %s>%s</a>',
esc_url( $product->add_to_cart_url() ),
esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ),
esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ),
isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '',
esc_html( $product->add_to_cart_text() )
),
$product,
$args
);
Его надо заменить на:
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
global $product;
echo apply_filters(
'woocommerce_loop_add_to_cart_link', // WPCS: XSS ok.
sprintf(
'<a href="%s" data-quantity="%s" class="%s" %s>%s</a>',
esc_url( '#' ),
esc_attr( isset( $args['quantity'] ) ? $args['quantity'] : 1 ),
esc_attr( isset( $args['class'] ) ? $args['class'] : 'button' ),
isset( $args['attributes'] ) ? wc_implode_html_attributes( $args['attributes'] ) : '',
esc_html( $product->add_to_cart_text() )
),
$product,
$args
);
Как вы могли заметить, мы вместо ссылки на добавление товара, просто ставим знак решётки "#". Теперь ботам переходить некуда, а пользователи могут спокойно добавлять товары по технологии Ajax.