Вам нужно добавить хуки и фильтры для добавления пользовательской конечной точки, только когда пользователь играет определенную роль. Следующий код отображает пользовательскую конечную точку только в том случае, если пользователь является администратором или менеджером магазина.
$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 Этот код не будет работать, если вы назначили пользователю несколько ролей.