Настроить новый пункт меню моей учетной записи для определенной роли пользователя в Woocommerce - PullRequest
0 голосов
/ 03 декабря 2018

Я создал несколько пользовательских конечных точек «Моя учетная запись» для Woocommerce.Я пытаюсь ограничить один видимость для каждой роли пользователя.Для следующего кода я бы хотел, чтобы он был виден только пользователю с ролью администратора.Я попытался вставить условное if (current_user_can('administrator')) в мой код, но не нашел способа, который не нарушил бы сайт.Любые предложения, как изменить следующее?

/* Create Admin Tab on Woo Account Page
------------------------------------------------------------------*/

function add_admin_tools_endpoint() {
 add_rewrite_endpoint( 'admin-tools', EP_ROOT | EP_PAGES );
}

add_action( 'init', 'add_admin_tools_endpoint' );

function add_admin_tools_query_vars( $vars ) {
 $vars[] = 'admin-tools';
 return $vars;
}

add_filter( 'query_vars', 'add_admin_tools_query_vars', 0 );

function add_admin_tools_link_my_account( $items ) {
 $items['admnin-tools'] = 'Admin';
 return $items;
}

add_filter( 'woocommerce_account_menu_items', 'add_admin_tools_link_my_account' );

function add_admin_tools_content() {
 echo "<h3 style='text-align:center;'>Administration Tools</h3>&nbsp;<p style='text-align:center;'>Test of various functions.</p>";
}

add_action( 'woocommerce_account_admin-tools_endpoint', 'add_admin_tools_content' );

1 Ответ

0 голосов
/ 03 декабря 2018

Вот правильный способ включить и отобразить пользовательский пункт меню Моя учетная запись с его содержимым только для определенной роли пользователя (здесь роль пользователя "Администратор") :

add_action( 'init', 'add_admin_tools_account_endpoint' );
function add_admin_tools_account_endpoint() {
    add_rewrite_endpoint( 'admin-tools', EP_PAGES );
}

add_filter ( 'woocommerce_account_menu_items', 'custom_account_menu_items', 10 );
function custom_account_menu_items( $menu_links ){
    if ( current_user_can('administrator') ) {
        $menu_links = array_slice( $menu_links, 0,3 , true )
        + array( 'admin-tools' => __('Admin tools') )
        + array_slice( $menu_links, 3, NULL, true );
    }
    return $menu_links;
}

add_action( 'woocommerce_account_admin-tools_endpoint', 'admin_tools_account_endpoint_content' );
function admin_tools_account_endpoint_content() {
    if ( current_user_can('administrator') ) {
        echo "<h3 style='text-align:center;'>Administration Tools</h3>
        <p style='text-align:center;'>Test of various functions.</p>";
    }
}

Код помещается в файл function.php вашей активной дочерней темы (или активной темы).Протестировано и работает.

Вам нужно будет обновить правила перезаписи: В Wordpress admin в «Настройки»> Постоянные ссылки, просто нажмите кнопку «Сохранить изменения» один раз.Вы сделали.

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