wc_get_page_id() – получает ID одной из системных страниц WooCommerce

Мой видеокурс по созданию темы WooCommerce на основе готовой вёрстки смотрите здесь.

Благодаря этой функции вы можете получите ID (целое число) одной из системных страниц:

Системные страницы WooCommerce – Корзина, Оформление заказа, Магазин, Мой аккаунта, Страница правил и условий

… которые задаются в настройках WooCommerce во вкладке Дополнительно и во вкладке Товары, если мы говорим о странице «Магазин».

wc_get_page_id( $page )

У функции лишь один, но обязательный параметр:

$page
(строка) идентификатор страницы, ID которой планируем получить.
  • cart – страница корзины,
  • shop – страница магазина,
  • myaccount – страница «Моя учётная запись»,
  • checkout – страница оформления заказа,
  • terms – страница правил и условий.

Раньше ещё существовали такие возможные значения для параметра: pay, thanks, change_password, edit_address, lost_password, но с версии WooCommerce 2.1 они устарели и больше не используются.

Пример

Например получаем и выводим ссылку на страницу корзины при помощи get_permalink().

$cart_url = get_permalink( wc_get_page_id( 'cart' ) );
echo '<a href="' . $cart_url . '">Перейти в корзину</a>';

Да, я знаю, что для этого существует функция wc_get_cart_url(), но это же всего лишь пример.

Как работает?

Открою вам секрет, эта функция работает на основе самой обычной функции WordPress get_option() и по сути она подставляет тот параметр, который вы в неё передаёте в название ключа из базы данных, например:

$page_id = get_option( 'woocommerce_' . $page . '_page_id' );

Как вы возможно догадались, у каждой системной страницы WooCommerce есть своя строка в базе данных WordPress, в таблице wp_options, которая содержит ID этой страницы:

  • woocommerce_cart_page_id – для страницы Корзины,
  • woocommerce_checkout_page_id – страница Оформления заказа,
  • woocommerce_myaccount_page_id – Личный кабинет,
  • woocommerce_shop_page_id – Магазин,
  • woocommerce_terms_page_id – Правила и условия;

И к результату действия функции ещё применяется хук woocommerce_get_{ Страница }_page_id.

Пример – если несмотря на то, что в базе данных уже указан определённый ID страницы «Магазин», вы вот хотите, чтобы для этой страницы функция wc_get_page_id() всегда возвращала единицу (не знаю зачем). И это возможно!

add_filter( 'woocommerce_get_shop_page_id', function( $page_id ) {
	return 1;
} );

Миша

Впервые познакомился с WordPress в 2009 году. Организатор и спикер на конференциях WordCamp. Преподаватель в школе Нетология.

Если вам нужна помощь с сайтом или разработка с нуля на WordPress / WooCommerce — пишите. Я и моя команда будем рады вам помочь!

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

Если вы хотите добавить код, не забудьте обернуть его в <pre lang="php"></pre>, если же код – меньше одной строчки, то можно и в <code></code>.