Cómo limitar a los autores a ver su propio contenido en wordpress
Si tienes un blog multi usuario, tal vez tengas este problema que los autores pueden ver todas las publicaciones cuando ellos sólo deben ver las suyas propias, es decir limitar a los autores a ver su propio contenido en wordpress.
Aquí una imágen explica el problema del listado de publicaciones en el admin:
A pesar que el autor puede sólo editar sus publicaciones, es mejor que por defecto las otras publicaciones no aparescan.
Cómo evitar que los autores miren todas las publicaciones en WordPress
Usaremos el hook pre_get_posts
para este propósito. Pero! debes ser cuidadoso con este hook porque éste afecta a la web completa ( Backend y Frontend ). Si usas las correctas condiciones, todo estará bien.
<?php if( !function_exists('letsgodev_limit_posts') ) { function letsgodev_limit_posts($query) { global $pagenow; // Si el autor no está en la lista de publicaciones, no aplico if( 'edit.php' != $pagenow || ! $query->is_admin ) return $query; // Si el autor tiene la habilidad de editar otros posts, no aplico if( current_user_can( 'edit_others_posts' ) ) return $query; global $user_ID; $query->set( 'author', $user_ID ); return $query; } add_filter( 'pre_get_posts', 'letsgodev_limit_posts'); }
Explicación del código.
El primer condicional: aplicará el script si el autor está ubicado en el listado de publicaciones en el admin. Si el no está en esa sección, el script no aplicará.
El segundo condicional: aplicará el script si el autor no tiene permisos de editar otras publicaciones porque si el autor puede hacerlo es probable que este autor es editor o administrador.
Finalmente, el script obtiene el ID del actual autor ( con sesión activa ) en la variable $user_ID y establece eso en la consulta a la DB, entonces la lista ahora tiene un nuevo filtro ( o WHERE en la setencia SQL ).
Resultado:
Ahora cuando el autor se ubica en la lista de publicaciones en el admin, él verá sólo sus publicaciones.
Si te gustó este artículo por favor compartelo.