Мой видеокурс по созданию темы WooCommerce на основе готовой вёрстки смотрите здесь.
Благодаря этой функции вы можете получите ID (целое число) одной из системных страниц:
… которые задаются в настройках WooCommerce во вкладке Дополнительно и во вкладке Товары, если мы говорим о странице «Магазин».
wc_get_page_id( $page )
У функции лишь один, но обязательный параметр:
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; } );
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.