¿Hay alguna forma (complemento) de restringir a un usuario para que pueda editar solo una página?

9

Usamos WordPress como un CMS y nos gustaría mucho permitir que los usuarios tengan una "página de inicio". Lo ideal sería evitar que destruyeran todo el sitio.

¿Existe una forma sencilla de limitar los derechos de edición de los usuarios a una sola página?

Actualmente estoy usando el complemento de miembros para hacer otras cosas basadas en permisos , por lo que sería genial si una solución pudiera aumentar esto o reemplazarlo por completo.

Puntos de bonificación para la creación automática de una página de inicio cuando se crea un nuevo usuario.

ACTUALIZACIONES: Debería aclarar que estas páginas deben limitarse a un área específica del sitio (es decir, a todos los niños de la misma página). Además, después de hablar con algunos usuarios, parece que les resultaría útil crear subpáginas que se bifurquen desde su página de inicio.

    
pregunta Tom Wright 13.09.2010 - 12:32

8 respuestas

4

Lamento hacer esto, pero me encontré con la respuesta en los foros de wordpress .

Resulta que Scole Scoper hace esto realmente bien. El autor de ese post del foro lo dijo mejor:

  

Para permitir que un usuario edite una página en particular, pero no otra cosa:

     
  1. Dales una función de Suscriptor para WordPress
  2.   
  3. Administrar > Páginas > Edita su página
  4.   
  5. Expanda la pestaña "Editores" en "Opciones avanzadas"
  6.   
  7. Marque la casilla de verificación sin arriostramiento a la izquierda del nombre de su usuario (si se crearán páginas secundarias, marque también la casilla de verificación con refuerzos {[]}, que asigna la función a todas las páginas secundarias actuales o futuras)
  8.   
  9. guardar la página
  10.   
    
respondido por el Tom Wright 29.01.2011 - 13:18
5

Una instalación básica de WordPress probablemente no hará lo que quieres que haga. Puede configurar una instancia de varios sitios y permitir a los usuarios tener su propio "sub" sitio, o usar algo como BuddyPress o Mingle que tiene una función de perfil de usuario.

    
respondido por el Norcross 14.09.2010 - 23:15
3

Enfrenté la misma situación que tú y lo que hice fue crear un tipo de publicación personalizado llamado "página de inicio" y también creé el complemento de "Límites de creación de publicaciones de Bainternet" para limitar la creación de cada tipo de publicación por usuario. Pruébelo enlace

    
respondido por el Bainternet 29.01.2011 - 12:59
2

El complemento User Access Manager lo hará por usted, todos los otros enfoques son demasiado complicados. UAM es fácil, configura grupos y asigna el grupo a tus subpáginas, listo.

    
respondido por el BUGHUNTER 02.08.2012 - 22:46
1

Utilizaría el Capability Manager o verifico las funciones y capacidades en Codex para hacer esto.

    
respondido por el Ben West 14.09.2010 - 00:18
1

La solución implica que ha desactivado la edición de los tipos de publicación "normales" (publicación, página).

no es tan difícil como puedes creer. La clave es el nombre de inicio de sesión del usuario . Lo mismo se podría hacer con taxonomías o incluso términos.

Vea lo siguiente (también hay un ejemplo para una consulta):

// 1st: Add a post type for that user with it's 
//   user login & according capabilities 
function create_user_home() {
    global $current_user;
    get_currentuserinfo();

    register_post_type(
        'home_of_'.$current_user->user_login,
        array(
            'public' => true,
            'capability_type' => $current_user->user_login,
            'capabilities' => array(
                'publish_posts' => 'publish_'.$current_user->user_login,
                'edit_posts' => 'edit_'.$current_user->user_login,
                'edit_others_posts' => 'edit_'.$current_user->user_login,
                'delete_posts' => 'delete_'.$current_user->user_login,
                'delete_others_posts' => 'delete_others_'.$current_user->user_login,
                'read_private_posts' => 'read_private_'.$current_user->user_login,
                'edit_post' => 'edit_'.$current_user->user_login,
                'delete_post' => 'delete_'.$current_user->user_login,
                'read_post' => 'read_'.$current_user->user_login,
            ),
        )
    );
}
add_action( 'init', 'create_user_home' );

// A query could be done like this:
wp_reset_query(); // to be sure

global $wp_query, $current_user;
get_currentuserinfo();

$query_user_home = new WP_Query( array(
    ,'order'        => 'ASC'
    ,'post_type'    => 'home_of_'.$current_user->user_login
    ,'post_status'  => 'publish'
) );

if ( $query_user_home->have_posts() ) :
    while ( $query_user_home->have_posts() ) : $query_user_home->the_post();
        // check for password
        if ( post_password_required() ) :
            the_content();
        elseif ( !current_user_can('') ) :
            // display some decent message here
            return;
        else :

            // here goes your content

        endif;
    endwhile;

else : // else; no posts
    printf(__( 'Nothing from Mr./Mrs. %1$s so far.', TEXTDOMAIN ), $current_user->user_firstname.' '.$current_user->user_lastname);
endif; // endif; have_posts();

wp_rewind_posts(); // for a sec. query

Con las taxonomías, esto tendría incluso más sentido, ya que solo podría consultar las publicaciones etiquetadas con términos de las taxonomías de estos usuarios, pero eso necesitaría un cuadro de meta con los términos de taxonomía de los usuarios. La condición sería la misma: el nombre de inicio de sesión del usuario y simplemente agregaría la taxonomía:

function create_user_tax() {
    if ( current_user_can("$current_user->user_login") ) :
        global $current_user;
        get_currentuserinfo();

        $singular = $current_user->user_login;
        $plural = $singular.'\'s';

        // labels
        $labels = array (
                 'name'         => $plural
                ,'singular_name'=> $singular
            );

        // args
        $args = array (
             'public'               => true
            ,'show_in_nav_menus'    => true
            ,'show_ui'              => true
            ,'query_var'            => true
            ,'labels'               => $labels
            ,'capabilities' => array(
                'manage_'.$current_user->user_login
            )
        );

        // Register
        register_taxonomy ( 
             $current_user->user_login
            ,array ( 'post', 'page' )
            ,$args
        ); 
        // Add to post type
        // you can even add your current user post type here
        register_taxonomy_for_object_type (
             $current_user->user_login
             ,array ( 'post', 'page', 'home_of_'.$current_user->user_login ) 
        );
    endif;
}
add_action( 'init', 'create_user_tax' );

La ubicación de la verificación de capacidad (current_user_can) también podría estar en otro lugar. Depende todo de tus necesidades específicas. Solo para asegurarse: estos son ejemplos que lo guiarán en su camino hacia una solución. Espero que ayude :)

    
respondido por el kaiser 04.02.2011 - 01:59
0

He hecho algo similar con "miembros", un tipo de publicación personalizada y una asignación manual de derechos de autor a un miembro específico, ya que es un sitio web de un grupo pequeño, pero recuerdo haber leído en un hilo de soporte de amigos de prensa que es posible conectarse al proceso de registro, por lo que supongo que sería posible crear automáticamente una página / tipo de publicación personalizada por usuario al registrarse y asignar esa página específica al miembro recién creado como página de inicio. También agregué el editor front-end de Scribu y bloqueé el backend a los miembros que no son administradores. Probablemente también puede agregar un redireccionamiento al registrarse para que los nuevos miembros sean redirigidos a su página (lo que, supongo, podría tener algún contenido predeterminado).

Veré si puedo encontrar ese hilo de soporte de buddypress.

Addendum: hay un error en el selector de autor en el campo de edición de publicación. Actualmente no utiliza el sistema de permisos estándar, lo que puede dificultar la solución de los miembros (aunque probablemente funcione si se asigna al autor en la creación de la página). Hay un parche en trac, pero no creo que se haya aplicado al núcleo todavía.

    
respondido por el user2789 31.01.2011 - 07:32
0

esto es posible con el plugin s2member, la versión gratuita es suficiente. He creado un área de cliente donde cada cliente tiene una URL hay un video tutorial aquí: enlace

    
respondido por el paul 01.02.2011 - 10:50

Lea otras preguntas en las etiquetas