Как я могу определить, используется ли шаблон «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()
функционировать?
Обновить: Обнаружение конкретно Моего аккаунта «Приборная доска» страница
<?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 …
У меня был такой же вопрос (годы спустя, лол). Для людей, которые ищут ответ и задаются вопросом, почему он бесполезен, в 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’) =>
Когда отображается страница конечной точки для добавления метода оплаты.
Я не думаю, что 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 для ВСЕХ подстраниц «Моя учетная запись», поэтому ее нельзя использовать для определения того, находитесь ли вы на странице панели инструментов.