• Resuelto manvilfer

    (@manvilfer)


    Hola!
    Me están pidiendo para una web una configuración un poco rara para los roles de usuario. Tienen una categoría “Foro de Discusión” donde publican entradas con preguntas. Quieren que las entradas de esta categoría sean visibles para todos los usuarios pero que solo puedan comentarlas un subgrupo.
    ¿Como puedo hacer esto? Estoy intentando con Role Scoper pero al restringir las categorías, los usuarios que se quedan fuera no pueden verlas en la web. ¿Alguna idea? Gracias!!!

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • Moderador Rafa Poveda

    (@bi0xid)

    Buenas, señor.

    La idea sería hacer algo como lo siguiente:

    SI 
       rol = comentador
    ENTONCES
       muestra cuadro de comentarios

    Si te creas un rol de comentador (que puedes crearlo con Role Scoper o cualquier otro plugin de creación de roles), después lo que tendrás que hacer en la plantilla de las entradas de categoría es filtrar a los usuarios, y mostrar el cuadro de responder comentarios o no dependiendo de su rol.

    Iniciador del debate manvilfer

    (@manvilfer)

    Hola Rafa, gracias por responderme tan rápido, me das un gran punto de partida. Me aprovecho un poco más. Para hacer eso de

    en la plantilla de las entradas de categoría es filtrar a los usuarios, y mostrar el cuadro de responder comentarios

    ¿existe algún plugin o hay que hacerlo a manita? ¿algún ejemplo iluminador?

    Muchas gracias! ; )

    Moderador Rafa Poveda

    (@bi0xid)

    Pues me temo que para cosas tan específicas hay que ir a mano.

    Para saber si un usuario tiene un rol específico:

    $user = wp_get_current_user();
    if ( in_array( 'comentador', (array) $user->roles ) ) {
        //The user has the "comentador" role
    }
    

    Usa eso para, en la plantilla de comentarios, filtrar a los usuarios que pueden comentar o no.

    Normalmente las plantillas de comentarios tiene algo como comment_form($comments_args);

    Sería escribir algo así en la plantilla:

    $user = wp_get_current_user();
    if ( !in_array( 'comentador', (array) $user->roles ) ) {
        comment_form($comments_args);
    }

    Es decir, si el usuario NO es comentador, entonces el formulario para comentar aparece.

    El dónde esté el formulario dependerá de tu tema, pero probablemente tengas un archivo comments.php por ahí.

    Un saludo.

    Iniciador del debate manvilfer

    (@manvilfer)

    Solucionado, como bien decías, solo he editado el archivo de comentarios (coments.php) y he verificado que para la categoría «foro» los usuarios «subscriber» no puedan comentar. Dejo el código que es muy sencillo por si le sirve a alguien más.

    $categories = get_the_category();
     	if ( ! empty( $categories ) ) {
        	$cat=$categories[0]->slug;   
    	}
    	$current_user = wp_get_current_user();
    	$role=$current_user->roles[0];
     	if (strcmp($cat,"foro")!==0 || strcmp($role,"subscriber")!==0) {
      	comment_form();
      	}
    • Esta respuesta fue modificada hace 7 años, 7 meses por manvilfer.
    • Esta respuesta fue modificada hace 7 años, 7 meses por manvilfer. Razón: corrección
    Moderador Rafa Poveda

    (@bi0xid)

    Genial. Muchas gracias 🙂

Viendo 5 respuestas - de la 1 a la 5 (de un total de 5)
  • El debate ‘Configuración acceso a contenido y grupos de usuarios’ está cerrado a nuevas respuestas.