检测WooCommerce"我的帐户"页面的仪表板

Ren*_*eye 6 php wordpress conditional user-accounts woocommerce

如何检测仪表板上是否使用了"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>
Run Code Online (Sandbox Code Playgroud)

但这感觉有点hacky.是不是有is_myaccount_dashboard()功能?

Loi*_*tec 7

更新:专门检测我的帐户"信息中心"页面

<?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>
Run Code Online (Sandbox Code Playgroud)

经过测试和工作.


原始答案:

是的,当然有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 
    } 
} 
?>
Run Code Online (Sandbox Code Playgroud)

参考:


之后,您可以使用我的帐户模板通过主题覆盖WooCommerce模板,以微调甚至更多的WooCommerce行为......


Dan*_*an. 5

要在“我的帐户”区域中检测您所在的确切页面(以便您确定正在使用哪个模板),我认为 Woocommerce 没有提供任何方法。

我认为您必须使用普通 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
}
Run Code Online (Sandbox Code Playgroud)

Woocommerce 的is_account_page()条件函数将为所有“我的帐户”子页面返回 true,因此无法用于确定您是否专门位于仪表板页面。