我今天正在玩自己的結帳設計和 UX,而在測試時,我意識到新客户可以在購買後訪問 WP 管理黑色條。所以 – 我説 – 容易的任務!

但是經過 20 分鐘的現實(以為是需要 1 分鐘),我終於找到了這個問題。和往常一樣,這個博客自帶的解決方案 – 隨意使用這個修復在您自己的 WooSite🙂

D’ 哦!WooCustomers 可以看到 WP 管理員欄…

1. 隱藏 WP 管理員:理論

WordPress 為我們提供了一個名為 “ show_admin_bar ” 的過濾器。容易的愚蠢 – 將其設置為 false,管理員欄已經消失:

 // Disable admin bar for non admins (this would work on a non-Woo site...)  function bbloomer_hide_admin_bar_if( $show ) { 	if ( /* CONDITION */ ) $show = false; 	return $show; }  add_filter( 'show_admin_bar', 'bbloomer_hide_admin_bar_if' );  

2. 隱藏 WP 管理員:Woo Reality

After the above snippet wouldn’t work on a Woo install, I did a lot of research. Tried other snippets but nothing. So, I said to myself… what if WooCommerce is ALREADY using that filter and I’m trying to edit the behavior of something that Woo is already modifying?

Well… here’s what I found in woocommerceincludeswc-user-functions.php:

 /**  * Prevent any user who cannot 'edit_posts' (subscribers, customers etc) from seeing the admin bar.  *  */  function wc_disable_admin_bar( $show_admin_bar ) { 	if ( apply_filters( 'woocommerce_disable_admin_bar', get_option( 'woocommerce_lock_down_admin', 'yes' ) === 'yes' ) && ! ( current_user_can( 'edit_posts' ) || current_user_can( 'manage_woocommerce' ) ) ) { 		$show_admin_bar = false; 	}  	return $show_admin_bar; } add_filter( 'show_admin_bar', 'wc_disable_admin_bar', 10, 1 );  

See, something is already using the filter “show_admin_bar”, and what matters the most – the priority specified there is “10”.

Basically I was changing the behavior of the WP Admin Bar, but then WooCommerce was re-changing it after my call – in fact without specifying the priority, my filter got a default priority of “10”, too early to expect Woo NOT to re-change such functionality.

If this is not clear, and you’d rather get the fix – well, not to worry, here it is.

3. 隱藏非管理員的 WP 管理欄:WooCommerce PHP Snippet

 /**  * @snippet       WooCommerce Hide WP Admin Bar for non-Admins   * @sourcecode    https://businessbloomer.com/?p=21213  * @author        Rodolfo Melogli  * @testedwith    WooCommerce 2.6.7  */  function bbloomer_hide_admin_bar_if_non_admin( $show ) { 	if ( ! current_user_can( 'administrator' ) ) $show = false; 	return $show; }  add_filter( 'show_admin_bar', 'bbloomer_hide_admin_bar_if_non_admin', 20, 1 );  // please note the priority = '20' to make sure we run the filter after Woo's one  


可以在哪裏添加此代碼?

您可以將 PHP 代碼片段放置在主題或子主題的 functions.php 文件的底部(如果是 CSS 代碼,請添加到主題的 style.css 文件底部),修改之前建議先備份原始文件,若出現錯誤請先刪除此代碼。


這段代碼是否正常可用?

或者是您有更好的解決方案想要分享?請到薇曉朵 WooCommerce 中文論壇留言告知,我們希望可以幫到更多國內的 WooCommerce 用户也希望您的參與。


需要關於 WooCommerce 的幫助?

請觀看我們提供的免費視頻教程或到薇曉朵 WooCommerce 中文論壇提問,會有專業技術團隊提供相關幫助。