Obtendo uma lista das funções atualmente disponíveis em um site WordPress?

36

Ao escrever plug-ins do WordPress, geralmente é necessário definir opções para as funções do site que têm acesso a determinadas funcionalidades ou conteúdos. Para fazer isso, um plugin deve buscar a lista de funções que existem no site para usar na opção. Como as funções personalizadas podem ser criadas, não podemos assumir que as funções padrão sejam as únicas disponíveis.

Qual é a melhor maneira de buscar a lista?

    
por jerclarke 11.09.2010 / 21:38
fonte

4 respostas

43

As funções são armazenadas na variável global $wp_roles .

A função ideal é get_editable_roles() de /wp-admin/includes/user.php

function get_editable_roles() {
    global $wp_roles;

    $all_roles = $wp_roles->roles;
    $editable_roles = apply_filters('editable_roles', $all_roles);

    return $editable_roles;
}

A parte "editável" é porque ela oferece a outros plugins a chance de filtrar a lista no caso de alguém diferente de admin ter 'edit_users' privilege (e, portanto, 'admin' precisa ser removido do lista, senão esse usuário poderia se tornar admin). Os plugins de gerenciamento de função usados para criar funções personalizadas são os que usariam esse filtro. Caso contrário, esta função é essencialmente get_roles() (que não existe) .

Presumivelmente, seu plug-in oferecerá apenas a página de configurações em questão para alguém que tenha recursos de nível de administrador como 'manage_options' e seja basicamente um administrador com acesso a todas as funções, portanto o filtro não afetará você.

Há também wp_dropdown_roles() que fornece as funções de <option> fields para uma <select> list (embora as caixas de seleção provavelmente funcionem melhor em muitos cenários em que você está escolhendo quem tem acesso a algo) .

    
por jerclarke 11.09.2010 / 21:41
fonte
11

Tente isto:

function get_role_names() {

global $wp_roles;

if ( ! isset( $wp_roles ) )
    $wp_roles = new WP_Roles();

return $wp_roles->get_names();
}

PS heh, perdeu essa explicação e resposta, muito rápido comigo:)

    
por Rarst 11.09.2010 / 21:47
fonte
0

Veja como você pode encontrar a lista de funções sem nenhum plug-in ou função enlace

    
por Manuel Costales 26.01.2016 / 21:47
fonte
0

Para aqueles que têm site multilíngue, função

function wp_roles_array() {
    $editable_roles = get_editable_roles();
    foreach ($editable_roles as $role => $details) {
        $sub['role'] = esc_attr($role);
        $sub['name'] = translate_user_role($details['name']);
        $roles[] = $sub;
    }
    return $roles;
}

retorna uma matriz localizada como essa (os nomes das funções estão no idioma eslovaco):

Array
(
    [0] => Array
        (
            [role] => administrator
            [name] => Administrátor
        )

    [1] => Array
        (
            [role] => editor
            [name] => Editor
        )

    [2] => Array
        (
            [role] => author
            [name] => Autor
        )

    [3] => Array
        (
            [role] => contributor
            [name] => Prispievateľ
        )
)
    
por Jasom Dotnet 25.05.2016 / 12:58
fonte