如何在woocommerce的“我的帐户”部分中向特定用户(如订阅者)隐藏自定义标签

时间:2020-04-24 02:16:09

标签: wordpress woocommerce hook-woocommerce

我在woocommerce的“我的帐户”部分中添加了一个自定义标签,其中显示了管理员发布的网站上的帖子统计信息。因此,如何向订阅者/客户等其他用户隐藏该特定标签。

1 个答案:

答案 0 :(得分:0)

仅当用户具有特定角色时,才需要添加挂钩和过滤器以添加自定义端点。以下代码仅在用户是管理员或商店管理员时显示自定义端点。

$whitelist_roles = array(
    'administrator',
    'shop_manager'
);

$current_user_role = prefix_get_current_user_roles()[0];

if ( in_array( $current_user_role, $whitelist_roles ) ) {
    // Add rewrite url.
   add_action( 'init', function() {
       add_rewrite_endpoint( 'custom', EP_ROOT | EP_PAGES );
   });

   // Add custom menu item to the sidebar.
   add_filter( 'woocommerce_account_menu_items', function( $items ) { 
       $items['custom'] = esc_html__( 'Custom', 'text-domain' );

       return $items;
   } );

   // Display the content for the custom endpoint.
   add_action( 'woocommerce_account_custom_endpoint', function() {
       echo '<div>Custom Endpoint Data</div>';
   });
}

function prefix_get_current_user_roles() {
    if ( ! is_user_logged_in() ) {
        return array();
    }

    $user  = wp_get_current_user();
    $roles = (array) $user->roles;

    return $roles;
}

P.S。您可能需要保存永久链接以使其正常工作。

P.S。如果您为用户分配了多个角色,则此代码将不起作用。