Без лишних слов, сделать нужно следующее:
- Добавить новый endpoint (для хука woocommerce_account_(key)_endpoint)
- Добавить ссылку на страницу в навигацию ЛК WooCommerce
- Создать страницу при помощи хука
- Обновить пермалинки
Для начала определимся с тем, какой слаг будет у страницы. Для учебного примера пусть будет «my-custom-page». Тогда ссылка будет «/my-account/my-custom-page». Запоминаем слаг и двигаемся дальше.
Добавить новый endpoint
Он необходим, чтобы хук woocommerce_account_(key)_endpoint отработал с нашей новой страницей. Используем хук init:
add_action( 'init', 'register_my_custom_page_endpoint' );
function register_my_custom_page_endpoint() {
add_rewrite_endpoint( 'my-custom-page', EP_ROOT | EP_PAGES );
}
Добавить страницу в навигацию личного аккаунта WooCommerce
Тут используем хук woocommerce_account_menu_items
add_action( 'woocommerce_account_menu_items', 'account_menu_items', 10, 2 );
function account_menu_items( $items, $endpoints ) {
$items['my-custom-page'] = 'Кастомная страница в ЛК';
return $items;
}
Ссылка на страницу появилась, но при попытке ее открыть, мы получим ошибку 404. Поэтому страницу надо создать.
Создать страницу ЛК при помощи хука
Для этого используем хук woocommerce_account_(key)_endpoint. «(key)» тут заменяем на слаг (ключ) страницы, который мы придумали в начале. Получается такая штука:
add_action( 'woocommerce_account_my-custom-page_endpoint', 'my_custom_page_content', 10 );
function my_custom_page_content() {
echo 'hello';
}
Обновить пермалинки
На этом шаге страница у вас уже могла появиться. Но если нет, то нужно просто нажать на кнопку «Обновить» в разделе «Постоянные ссылки» в админке. После этого всё заработает.