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;
} );

Миша

В последние годы я долго не знал, что мне делать с сайтом misha.blog, ведь он практически не приносит никакого профита, но недавно я осознал, что моя миссия – способствовать распространению WordPress. Ведь WordPress – это лучший движок для разработки сайтов – как для тех, кто готов использовать заложенную структуру этой CMS, так и для тех, кто предпочитает headless решения.

Сам же я впервые познакомился с WordPress в 2009 году. Организатор WordCamp. Преподаватель в школах Epic Skills и LoftSchool.

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

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

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