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> 

을하지만 그 종류의 해키 느낌 :

은 현재 내가 사용합니다. is_myaccount_dashboard()과 같은 기능이 없습니까?

답변

2

업데이트 : 특히 내 계정 "대시 보드" 페이지

<?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> 
테스트

와 작품을 감지.


원래 답 : 물론

예는 고객의 계정 페이지에 true를 돌려주는 조건 is_account_page() 기본 WooCommerce있다.

여기 is_account_page()is_user_logged_in()를 사용한 예이다. 내 계정 링크 URL을 얻으려면 다음을 사용할 수 있습니다. 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를 무효로하지는 않습니다.누가 손가락을 가리 키지 않고 내 대답을 떨어 뜨린 사람은 명백히 뼈를 골라야했습니다. 내 솔루션은 확실히 질문을 해결할 수 –

-1

내 계정 영역 내에서 사용중인 정확한 페이지를 찾으려면 (어떤 템플릿이 사용 중인지 결정할 수 있도록), 나는 우회 상거래 방법을 제공한다고 생각하지 않습니다.

바닐라 PHP로 현재 URL을 가져 와서 대시 보드/내 계정 홈 페이지로 설정된 페이지의 URL과 비교해야합니다.

$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를 돌려줍니다, 그래서 당신은 대시 보드 페이지에 특별히 있다면 확인하는 데 사용할 수 없습니다.