Soporte » WordPress Avanzado » No ver entradas de otros usuarios

  • Resuelto Alvaro Lagarde

    (@alvarolagarde)


    Buenas grupo, necesito hacer una consulta.
    Tengo el siguiente problema y no se si puedo resolverlo con un plugin ya realizado o algo de código :).

    He creado un post type y sus taxonomias y desde la parte de backend necesito que solo me muestre los post type del usuario loguado (Ej: usuario: “pepe” perfil “suscriptor” o el que sea), solo los suyos y ningún otro más (que el pueda solo modificar o eliminar los que el creó y no los que se crearon por otros usuarios.

    Luego si me logueo con el usuario “Juan” no vea las entradas o post creados por “pepe” ni ningún otro usuario.

    No se si me explico bien. He instalado el Plugin USER ROLES AND CAPABILITIS pero puedo ver lo de crea un usuario en otro usuario y puedo modificarlo.

    Desde ya muchas gracias grupo, estoy buscando material de esto y no lo encuentro.

Viendo 11 respuestas - 16 de 26 (de 26 total)
  • Gracias @kallookoo muchas gracias, me inclino mas por la segunda opción. Una pregunta, ¿sabes cual es el archivo que tengo que modificar para poder hacerle la consulta en la query?

    Buenas,
    Te comento un par de cosas antes de conteste a la pregunta.
    He visto tus preguntas del foro y parecen que todas estan relacionadas.
    Asi que deduzco un par de cosas, la primera es que estas haciendo un portal para una veteriania y la segunda es que no has trabajado antes con WordPress o solo para hacer projectos sencillos.

    Dicho esto, y sin animo de ofender, etc… Te lo digo mas bien como un consejo.
    El WordPress tiene infinidad de utilidades con o sin plugins, todo es cuestion de saber plantear el problema y ver la posibles soluciones.

    Tu en este post en concreto quieres ocultar a los usuarios los posts (mascotas creo) que no sean creados por ellos. Eso lo puedes hacer facilmente, pero hablando con un compañero que tiene razon de que sirve si ese post que ocultas a x usuario lo puede ver visitando la web. No se si sabes por donde voy.

    Lo que quiero decirte es que si tengo razon tu planteamiento de como realizar el projecto no es el correcto, tambien comentarte que «nunca» se debe modificar los archivos del core del WordPress de hay que tienes los hooks otros compañeros lo llaman ganchos, para practicamente todo.

    Como personalmente yo no doy codigo y mas cuando son cosas mas complicadas por varios motivos, que no vienen al caso.

    Si estoy en lo cierto:
    – Replanteate como hacerlo
    – Informate de los plugins tipo memberships
    – Crea el codigo personalizado y necesario que necesites.
    Me refiero por ejemplo al post que querias crear otra tabla para gestionar un post_type y consecuencia necesitas mas codigo, etc..

    Si me equivoco, pues simplemente espero que no te moleste y para editar las queries del WordPress tienes este filtro por ejemplo ´pre_get_posts´.

    Te sugiero que hagas un par cosas,
    si te sientes comodo revisa los archivos del core para leer su documentacion, vamos un find y lees lo que hace.
    Revisa el https://codex.wordpress.org/ hay muchisima informacion
    Revisa el https://developer.wordpress.org/ tiene informacion mas actualizada
    El WordPress casi siempre te da una manera de hacerlo, no es necesario inventar nada ya que solo pierdes tiempo y posiblemente seguridad.
    Nosotros siempre que podamos ponemos todo de nuestra parte para ayudar pero llega un momento que no, ya sea porque no tenemos la informacion completa, correcta o no podamos entender que intenta hacer el usuario que pregunta.

    Saludos

    buenos dias @kallookoo no me molesta tus comentarios y gracias por el consejo.
    Primero que nada si estoy desarrollando en una web de veterinaria (que comenzo sencilla como tu dices) pero luego se la van a ir implemantando cosas.
    Por lo general me desenvuelvo solo y solo para cosas que ya no encontro en internet o escapa de mi las consulto. Todos y creo que tu alguna vez comenzaste a desarrollar en Worpress y te encontraste con miles de dudas y talvez hayas utilizado este foro para que te den una idea y poder seguir. Por lo que ves mi nivel de desarrollador no es el mismo que el tuyo (y ojala pronto pueda estarlo para poder ayudar a otros usuarios como lo haces tu) Pero por ahora nivel bajo-medio para ir progresando.
    La idea que tengo es crear una zona privada en una veterinaria para que cada cliente pueda ingresar los datos de su mascota en la web (he creado un CPT para ello) pero claro, no me interesa que cuando un usuario se logueé y entra al CPT de mascotas pueda ver las mascotas de los demás. Es logico eso. Por eso estoy viendo como hacerlo. Si instalo un plugin de memberships como Restrict Content Pro si puedo ver que los clientes pueden no ver que contenido desde el front-end. Pero quiero dar esa opcion que cada cliente cargue su mascota. Luego de eso hacerles una area privada con WP Consumer Area para que tengan sus paginas y archivos privados. Pero me veo que nada de eso me permite hacer lo que quiero. Qeu cuando entre en su Back-end y vaya a post type «Mascotas» solo me muestre las que el ha ingresado. Por eso es la pregunta.
    Desde ya muchas gracias y disculpa las molestias. 🙂

    Moderador almendron

    (@almendron)

    Es obvio que puede hacer lo que quieras, pero yo no acabo de entender por qué te complicas la vida.

    Dices : «no me interesa que cuando un usuario se logueé y entra al CPT de mascotas pueda ver las mascotas de los demás».

    Y yo pregunto: si yo, que ni siquiera soy usuario, visito la página, ¿puedo ver todas las mascotas?

    Si la respuesta es afirmativa, ¿qué sentido tiene que no se vean esas mismas mascotas cuando el usuario se loguea? Ninguna puesto que ve lo mismo que si entrara como visitante, es decir, solo ve las entradas.
    Con el rol de autor solo puedes ver las entradas como SI FUERAS UN VISITANTE.

    Si la respuesta en negativa, entonces sí tiene sentido lo que quieres hacer.

    HOla @almendron nooo!!!, claro que no pueden ver todas las mascotas. Cada uno puede ver su mascotas, sino que sentido tiene que filtre para que luego desde el front-end puedan ver todas.

    No se si no me explico bien pero la idea es que el usuario que ingresa el dato o llamalo mascota en el post type, solo pueda ver lo que el ingresa y no lo de los demas usuarios.
    Pero el problema me lo estoy encontrando en el back-end, ya que en el front end, no tengo problema ya que si quiere ver su mascota, solo le mostrare la del usuario. Ya que haré que para ver esa web tiene que estar logueado y cuando se logueé filtro por el usuario las mascotas que tiene en el post type y listo.

    No se si me entienden lo que digo? 🙂

    Hola Álvaro.

    Lo que necesitas es gestionar un aspecto de WordPress denominado capabilities. Para que nos entendamos, los permisos que se le dan a un CPT cuando se registra. Te pongo un ejemplo, tú primero registras un CPT denominado Mascota, con el siguiente código:

    	$args = array(
    		'label'                 => __( 'Pet', 'text_domain' ),
    		'description'           => __( 'Customer pets', 'text_domain' ),
    		'supports'              => array( 'title', 'editor' ),
    		'taxonomies'            => array( 'species', ' breed' ),
    		'hierarchical'          => false,
    		'public'                => false,
    		'show_ui'               => true,
    		'show_in_menu'          => true,
    		'menu_position'         => 5,
    		'show_in_admin_bar'     => true,
    		'show_in_nav_menus'     => true,
    		'can_export'            => true,
    		'has_archive'           => false,
    		'exclude_from_search'   => true,
    		'publicly_queryable'    => false,
    		'capability_type'       => array('pet', 'pets'),
    		'capabilities'          => array(),
                    'map_meta_cap'          => true,
    		
    	);
    	register_post_type( 'pet', $args );
    

    Fíjate en la parte de capability_type y map_meta_cap. Estos parámetros en el registro del CPT generan una serie de permisos específicos para este tipo de contenido en concreto.

    Una vez generados estos permisos, desde el User Role Editor podrás controlar para cada rol de usuario qué puede hacer con ese tipo de contenido. Lo que requerirás, al final, es desmarcar el permiso edit_others_pets.

    Una vez hecho esto, puedes usar el plugin WP Admin Hide Others Posts para terminar el trabajo, o quizá destripar este plugin y adaptarlo a tu gusto.

    Un saludo y suerte!

    • Esta respuesta fue modificada hace 7 meses, 2 semanas por  David Navia.

    Buenas Alvaro,
    Te comento, obviamente todos hemos pasado por el process de aprendizaje y el que diga que no, miente como un vellaco, :).
    Lo que te comente fue mas bien para que vieses (desde mi punto de vista) que te supera el proyecto y planteabas dudas que nosotros no entendiamos.

    Yo por ejemplo, hubiese preguntado desde el principio algo del tipo:
    Tengo que hacer una area privada que puedan publicar posts en un custom post type que ya tengo creado, sabeis de algun plugin que tenga esas caracteristicas.
    Y te hubiesen recomendado algun plugin o incluso diciendote algun codigo.

    Yo por eso te recomende que mirases plugins de membresia que es la manera mas rapida de implementarlo, o decirte que creases un custom role para que tu mediante codigo decidieses que puede o no ver el usuario.

    Bueno, ahora que ya sabemos que necesitas seguro que algun compañero te recomedara algun plugin mas concreto si es lo conocen.

    Saludos

    Hola @kallookoo si te entiendo, por eso es que talvez expliqué mal mi punto. Ya tendría que haber preguntado mas explícito mi problema y no tan puntual.
    Gracias!

    Si me dieron un consejo que lo tenia encaminado así. Lo probaré a ver si puedo solucionar me duda! 🙂

    Agradecer a @kallookoo @almendron y @davidnaviaweb por su ayuda. Gracias al consejo @davidnaviaweb pude hacer lo que necesitaba. Tenia creadas las capabilities pero me faltaba

    ‘capability_type’ => array(‘pet’, ‘pets’),
    ‘capabilities’ => array(),
    ‘map_meta_cap’ => true,

    y con esto asigne los permisos e instale el plugin y BOOM funcionó lo estaba buscando.
    Les pido perdón por expresar mal mis requerimientos, pero estoy avanzando paso a paso con el desarrollo en WordPress y me encanta, pero aveces me pierdo como con estas cosas y no se para donde ir.
    Les dejo estos link que son los que me documente mas luego que @davidnaviaweb me pasara su respuesta.

    Capacidades de usuario para custom post types
    https://cybmeta.com/capacidades-de-usuario-para-custom-post-types

    Plugin que me recomendó
    https://github.com/webbtj/wp-admin-hide-others-posts

    MUCHAS MUCHAS GRACIAS!!!!!! 🙂

    Me alegro!

    ¡A mandar!

Viendo 11 respuestas - 16 de 26 (de 26 total)
  • El debate ‘No ver entradas de otros usuarios’ está cerrado a nuevas respuestas.