1. Главная
  2. Блог
  3. Wordpress
  4. Условие if для шорткода woocommerce

Условие if для шорткода woocommerce

На днях на Wordpress сайте потребовалось создать посадочную страницу со списком карточек товаров, выводимых шорткодом [product_page]

Этот шорткод выводит детальную карточку товара на любой странице или записи Wordpress. И вот с каким недочетом столкнулись - шорткод [product_page] выводит карточку товара с заголовком h1 у названия товара. Поскольку на странице размещается несколько таких карточек, то и заголовков h1 тоже получается несколько. При этом у самого лендинга уже имеется свой собственный заголовок h1. Использование нескольких заголовков h1 на странице не приветствуется SEO специалистами, поэтому исправляем этот недочёт.

Логика подсказывает, что нам нужно в случае показа карточки товара в шорткоде, а не на странице товара поменять вывод названия в тегах h2 вместо h1.

шорткод woocommerce изменить вывод

Но, в документации Woocommerce информации о том как проверить выводится ли товар в шорткоде нет.

Пробуем вывести код изменяющий тег заголовка 


remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
add_action( 'woocommerce_single_product_summary', 'test_template_single_title', 5 );
function test_template_single_title() {
the_title( '<h2 class="product_title entry-title">','</h2>' );
}

с разными проверками:

если id страницы


if (is_page() {
//..
}

не использует ли отображаемая страница (с размещенным шорткодом) шаблон WooCommerce:


if( !is_woocommerce() ){
	// ...
}

не является ли страница детальной страницей товара


if ( !is_product() ) {
	// ...
}

Все эти условия не рабочие. Всё что применяется к шаблонам страниц woocommerce, также применяется и к шорткоду. А изменения на не woocommerce страницах - никак не отражаются на шорткодах.

Но, рабочее решение изменения вывода шорткода нашлось. Суть его в том, что функция с хуком изменения заголовка woocommerce вложена в функцию проверки страницы. А функция проверки использует хук wordpress wp или более поздний. Заметим, что хук init в данном случае не сработает.

Итак, рабочий код изменения вывода шорткода на определенных условием страницах:


add_action( 'wp', 'proverka' );//здесь применяем хук wp, init - не сработает
function proverka(){
	global $post;//это нужно, если требуется проверка наличия родительской страницы
    if (is_page() && $post->post_parent = '11106') {//здесь дополнительно проверяется, что страница, имеет родителя с id 11106
    remove_action( 'woocommerce_single_product_summary', 'woocommerce_template_single_title', 5 );
   add_action( 'woocommerce_single_product_summary', 'tag_template_single_title', 5 );
   function tag_template_single_title() {//эта функция изменяет тег заголовка на h2
   the_title( '<h2 class="product_title entry-title">', '</h2>' );
}
    }
}

Понравилась статья?

Поддержать нас рублями:

Нужна помощь? Обращайтесь!

Комментарии
Name
Email
Phone
Ваше имя
Ваш email
Оставить комментарий
Нажмите для звонка
Хотите заказать сайт?
Обращайтесь любым удобным способом и мы поможем подобрать интересный вариант для Вас!