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()功能?
更新:专门检测我的帐户"信息中心"页面
<?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行为......
要在“我的帐户”区域中检测您所在的确切页面(以便您确定正在使用哪个模板),我认为 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,因此无法用于确定您是否专门位于仪表板页面。
| 归档时间: |
|
| 查看次数: |
9591 次 |
| 最近记录: |