Как скрыть пользовательские вкладки в разделе «Моя учетная запись» в woocommerce для указания c пользователей, таких как подписчики - PullRequest
0 голосов
/ 24 апреля 2020

Я добавил пользовательскую вкладку в разделе «Моя учетная запись» в woocommerce, которая отображает статистику сообщений с сайта, размещенных администратором. Так как же скрыть эту указанную вкладку c от других пользователей, таких как подписчики / клиенты.

1 Ответ

0 голосов
/ 24 апреля 2020

Вам нужно добавить хуки и фильтры для добавления пользовательской конечной точки, только когда пользователь играет определенную роль. Следующий код отображает пользовательскую конечную точку только в том случае, если пользователь является администратором или менеджером магазина.

$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;
}

PS Возможно, вам потребуется сохранить постоянную ссылку, чтобы она работала правильно.

PS Этот код не будет работать, если вы назначили пользователю несколько ролей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...