A medida que voy realizando proyectos en wordpress me voy encontrando con algunos baches que lejos de replantearme el dejar este CMS, hacen que constituyan un verdadero reto el salvarlos.

Imaginémonos que hacemos un catálogo (para lo que crearía un post-type nuevo de tipo «catalogo») en el que son varios los usuarios que tienen permisos para poder añadir productos a este catálogo. Ya que estamos imaginándolo, imaginemos también que estos usuarios son empresas, que añaden sus productos que yo de alguna manera promociono. Nada raro, sino fuera porque los usuarios pueden ver tanto las imágenes subidas como los «productos» creados de los demás, independientemente de que no puedan editar los productos de otros, queda un poco feo además de poco ético, ya que los usuarios/empresa podrían aprovechar los recursos de los demás.

Para evitar esto, hay una pequeña función que añadida a nuestro functions.php evitará que los usuarios puedan ver elementos creados por si mismos como posts, productos, imágenes, etc.

1
2
3
4
5
6
7
8
9
function query_set_only_author( $wp_query )
{
    global $current_user;
    if ( is_admin() && !current_user_can('manage_options') )
    {
        $wp_query->set( 'author', $current_user->ID );
    }
}
add_action('pre_get_posts', 'query_set_only_author' );

Sencillo, verdad ?