Мой видеокурс по созданию темы 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; } );
Чтобы оставить комментарий, пожалуйста, зарегистрируйтесь или войдите.