Pregunta

Al escribir plugins de WordPress a menudo hay una necesidad de establecer opciones para las que los roles en el sitio tienen acceso a cierta funcionalidad o contenido. Para ello necesita un plugin dev a buscar a la lista de funciones que existen en el sitio para su uso en la opción. Debido a que las funciones personalizadas se pueden crear no podemos asumir los roles predeterminados son los únicos disponibles.

¿Cuál es la mejor manera de buscar a la lista?

¿Fue útil?

Solución

Los roles se almacenan en la $wp_roles variable global.

La función ideal es get_editable_roles() desde /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;
}

El "editable" parte es porque ofrece otros plugins oportunidad para filtrar la lista en caso de que alguien más que el administrador tiene privilegios 'edit_users' (y por tanto las necesidades 'admin' sea retirado de la lista, otra cosa que el usuario podría hacerse admin). plugins de administración de funciones que se utilizan para crear funciones personalizadas son los que estarían utilizando ese filtro. De lo contrario, esta función es esencialmente get_roles() (que no existe) .

Es de suponer que su plugin sólo ofrecerá la página de configuración de que se trate a alguien que tiene capacidades de nivel de administrador como 'manage_options' y es básicamente un administrador con acceso a todas las funciones, por lo que el filtro no se debe afectar.

wp_dropdown_roles() que le da los papeles como <option> campos de una lista <select> (aunque casillas de verificación son propensos a trabajar mejor en muchos escenarios en los que estás eligiendo quién tiene acceso a algo) .

Otros consejos

Prueba esto:

function get_role_names() {

global $wp_roles;

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

return $wp_roles->get_names();
}

PS je, perdido esa explicación y responder, demasiado rápido mí:)

Aquí es cómo usted puede encontrar la lista de funciones sin ningún tipo de plugins o funciones http://screencast.com/t/uaWsGLAR3Sh

Para aquellos que tienen sitio multilingüe, la función

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

retornos localizada matriz como esto (los nombres de función están en lengua eslovaca):

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ľ
        )
)

Esto es cómo conseguir una matriz de todas las funciones de usuario existentes y las capacidades de cada función, en WordPress. Si no desea imprimir a la pantalla, omita la última línea. La variable $ papeles en la línea 2 llevará a cabo el conjunto de usuarios y capacidades para que pueda usarlo sin embargo es necesario. Véase más abajo para un ejemplo de la matriz devuelta.

global $wp_roles;
$roles = $wp_roles->roles; 

// print it to the screen
echo '<pre>' . print_r( $roles, true ) . '</pre>';
Licenciado bajo: CC-BY-SA con atribución
scroll top