Обнаружить панель инструментов WooCommerce & quot; мой аккаунт & quot; страницы

Как я могу определить, используется ли шаблон «myaccount / my-account.php» на панели инструментов.

В настоящее время я использую:

<?php
global $wp;
if ( !isset($wp->query_vars['page']) ) {
?>
<a href="/mein-konto/">Back to my Account</a>
<?php } ?>

<div class="myaccount_content">
<?php
do_action( 'woocommerce_account_content' );
?>
</div>

Но это похоже на хакерство. Неужели нет ничего подобного is_myaccount_dashboard() функционировать?

5

Решение

Обновить: Обнаружение конкретно Моего аккаунта «Приборная доска» страница

<?php
global $wp;
$request = explode( '/', $wp->request );

// If NOT in My account dashboard page
if( ! ( end($request) == 'my-account' && is_account_page() ) ){
?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id')); ?>">Back to my Account Dashboard</a>
<?php
}
?>

<div class="myaccount_content">
<?php
do_action( 'woocommerce_account_content' );
?>
</div>

Проверено и работает.


Оригинальный ответ:

Да конечно есть is_account_page() родное условие WooCommerce, которое возвращает true на страницах учетной записи клиента.

Вот пример использования is_account_page() а также is_user_logged_in(). Чтобы получить ссылку на мою учетную запись, вы можете использовать: get_permalink( get_option('woocommerce_myaccount_page_id') ).

if ( !is_account_page() ) { // User is NOT on my account pages

if ( is_user_logged_in() ) { // Logged in user

// Link to "My Account pages dashboard".
?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e('My Account', 'woocommerce'); ?>"><?php _e( 'My Account', 'woocommerce' ); ?></a>
<?php }
else { // User is NOT logged in

// Link to "Login / register page".
?>
<a href="<?php echo get_permalink( get_option('woocommerce_myaccount_page_id') ); ?>" title="<?php _e( 'Login / Register','woocommerce' ); ?>"><?php _e( 'Login / Register', 'woocommerce' ); ?></a>

<?php
}
}
?>

Ссылка:


После этого вы можете Переопределить шаблоны WooCommerce через тему использование шаблонов моей учетной записи для более точной настройки поведения WooCommerce …

5

Другие решения

У меня был такой же вопрос (годы спустя, лол). Для людей, которые ищут ответ и задаются вопросом, почему он бесполезен, в woocommerce есть функции обнаружения конечных точек, которые делают именно то, что вы ищете. Вы можете прочитать список доступных функций Вот.

Это взято непосредственно из документов WooCommerce. Я просто копирую его, только если ссылка не работает в будущем

is_account_page () =>
Возвращает true на страницах аккаунта клиента.

is_wc_endpoint_url () =>
Возвращает true при просмотре любой конечной точки WooCommerce

is_wc_endpoint_url (‘order-pay’) =>
Когда отображается страница конечной точки для оплаты заказа.

is_wc_endpoint_url (‘заказ получен’) =>
Когда отображается страница конечной точки для полученного заказа.

is_wc_endpoint_url (‘view-order’) =>
Когда отображается страница конечной точки для порядка просмотра.

is_wc_endpoint_url (‘edit-account’) =>
Когда отображается страница конечной точки для редактирования учетной записи.

is_wc_endpoint_url (‘edit-address’) =>
Когда отображается страница конечной точки для редактирования адреса.

is_wc_endpoint_url (‘lost-password’) =>
Когда отображается страница конечной точки для утерянного пароля.

is_wc_endpoint_url (‘customer-logout’) =>
Когда отображается страница конечной точки для выхода из системы клиента.

is_wc_endpoint_url (‘add-payment-method’) =>
Когда отображается страница конечной точки для добавления метода оплаты.

0

Я не думаю, что Woocommerce предлагает какой-либо способ определения точной страницы, в которой вы находитесь, в области «Моя учетная запись» (чтобы вы могли определить, какой шаблон используется).

Я думаю, что вам нужно получить текущий URL с помощью обычного PHP и сравнить его с URL-адресом страницы, на которой установлена ​​домашняя страница Dashboard / My Account.

например

$current_url = (isset($_SERVER['HTTPS']) ? "https" : "http") . "://$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";

$dashboard_url = get_permalink( get_option('woocommerce_myaccount_page_id'));

if($dashboard_url == $current_url){
// do your stuff here
}

WooCommerce-х is_account_page() условная функция вернет true для ВСЕХ подстраниц «Моя учетная запись», поэтому ее нельзя использовать для определения того, находитесь ли вы на странице панели инструментов.

-1
По вопросам рекламы [email protected]