2016-07-18 3 views
3

Как определить, используется ли шаблон «myaccount/my-account.php» на панели управления.Обнаружение панели WooCommerce «Моя учетная запись» страницы

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

<?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> 

Но что чувствует вид Hacky. Разве нет что-то вроде функции is_myaccount_dashboard()?

ответ

2

Update: Детектирование специфически Мой счет "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 условно, что возвращает истину на страницах учетной записи клиента.

Ниже приведен пример использования 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 
    } 
} 
?> 

Ссылка:


После этого вы можете Override WooCommerce Templates via a Theme используя мои шаблоны учетных записей для тонкой настройки даже больше WooCommerce модели поведения ...

+0

'is_account_page()' не может использоваться для обнаружения «панели управления» страниц «моей учетной записи» - эта функция возвращает true для всех страниц «моей учетной записи». –

+0

@ Dan. Да, я знаю ... * «Как я могу определить, не ответил ли ваш вопрос« myaccount/my-account.php »« * – LoicTheAztec

+0

»ваш первоначальный ответ (ни тот, ни другой в вопросе или в вопросе). Теперь вы только что опубликовали что-то, что решает его вопрос, но это, очевидно, не отменяет мой предыдущий комментарий и downvote.Тот, кто отклонил мой ответ (не указывая пальцами), очевидно, просто получил кость. Мое решение определенно решает вопрос lol –

-1

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

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

например.

$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 
} 

is_account_page() условная функция WooCommerce будет возвращать верно для ВСЕХ Мои данные подстраниц, поэтому не может быть использована, чтобы определить, если вы специально на странице Dashboard.

Смежные вопросы