Mostrar solo publicaciones / medios propiedad del usuario de WordPress conectado

Wordpress muestra solo publicaciones y medios de wordpress propiedad del usuario que inició sesión

Cómo deshabilitar la visualización de publicaciones y medios de otros usuarios de WordPress

Si alguna vez ha trabajado en un sitio de la comunidad de WordPress respaldado por muchos editores, es posible que haya notado que, aunque no puede editar las publicaciones de otros, aún puede ver los títulos de cada publicación dentro del administrador de WordPress. 

Esto se debe a que, de forma predeterminada, WordPress permite a los autores ver los títulos de todas las publicaciones, borradores y medios publicados.

En este tutorial, le mostraremos cómo deshabilitar la visualización de publicaciones y medios de otros usuarios.

Si desea ver más trucos que puede usar con WordPress, asegúrese de consultar algunos de nuestros otros artículos.

Contenido[Mostrar]

vista de títulos deshabilitada

Recuerde realizar una copia de seguridad de WordPress (usando estos complementos) antes de continuar en caso de que algo se rompa mientras modifica el código. 

1. Desactive la visualización de publicaciones y medios de otros usuarios de WordPress.

Agregue el siguiente código a su archivo functions.php para deshabilitar la visualización de publicaciones y medios de otros usuarios.

add_action('pre_get_posts', 'query_set_only_author' );
function query_set_only_author( $wp_query ) {
 global $current_user;
 if( is_admin() && !current_user_can('edit_others_posts') ) {
    $wp_query->set( 'author', $current_user->ID );
    add_filter('views_edit-post', 'fix_post_counts');
    add_filter('views_upload', 'fix_media_counts');
 }
}

2. Deshabilitar la visualización de los recuentos de publicaciones de WordPress

Como se mencionó, el código anterior solo deshabilitará la visualización de títulos de publicaciones de otros dentro del panel de WordPress.

El problema es que no deshabilitará mostrar los recuentos de publicaciones dentro de las barras de filtro 'todas las publicaciones', 'borradores', 'papelera' y 'pendientes'. Si también desea corregir el recuento de publicaciones en las barras de filtro, agregue el siguiente fragmento de código al archivo functions.php de su tema.

Tenga en cuenta que el siguiente código solo funcionará si se utiliza junto con el código anterior.

function fix_post_counts($views) {
  global $current_user, $wp_query;
  unset($views['mine']);
  $types = array(
    array( 'status' =>  NULL ),
    array( 'status' => 'publish' ),
    array( 'status' => 'draft' ),
    array( 'status' => 'pending' ),
    array( 'status' => 'trash' )
  );
 
  foreach( $types as $type ) {
    $query = array(
      'author'   => $current_user->ID,
      'post_type'   => 'post',
      'post_status' => $type['status']
    );
   
    $result = new WP_Query($query);

    if( $type['status'] == NULL ):
     
      $class = ($wp_query->query_vars['post_status'] == NULL) ? ' class="current"' : '';
      $views['all'] = sprintf(__('<a href="%s"'. $class .'>All <span class="count">(%d)</span></a>', 'all'),
        admin_url('edit.php?post_type=post'),
        $result->found_posts);

    elseif( $type['status'] == 'publish' ):

      $class = ($wp_query->query_vars['post_status'] == 'publish') ? ' class="current"' : '';
      $views['publish'] = sprintf(__('<a href="%s"'. $class .'>Published <span class="count">(%d)</span></a>', 'publish'),
        admin_url('edit.php?post_status=publish&post_type=post'),
        $result->found_posts);

    elseif( $type['status'] == 'draft' ):

       $class = ($wp_query->query_vars['post_status'] == 'draft') ? ' class="current"' : '';
       $views['draft'] = sprintf(__('<a href="%s"'. $class .'>Draft'. ((sizeof($result->posts) > 1) ? "s" : "") .' <span class="count">(%d)</span></a>', 'draft'),
         admin_url('edit.php?post_status=draft&post_type=post'),
         $result->found_posts);

    elseif( $type['status'] == 'pending' ):

        $class = ($wp_query->query_vars['post_status'] == 'pending') ? ' class="current"' : '';
        $views['pending'] = sprintf(__('<a href="%s"'. $class .'>Pending <span class="count">(%d)</span></a>', 'pending'),
          admin_url('edit.php?post_status=pending&post_type=post'),
          $result->found_posts);

    elseif( $type['status'] == 'trash' ):

        $class = ($wp_query->query_vars['post_status'] == 'trash') ? ' class="current"' : '';
        $views['trash'] = sprintf(__('<a href="%s"'. $class .'>Trash <span class="count">(%d)</span></a>', 'trash'),
          admin_url('edit.php?post_status=trash&post_type=post'),
          $result->found_posts);

    endif;
  }
 
  return $views;
}

3. Corrija los recuentos de medios

Si también desea deshabilitar los recuentos de medios, agregue el siguiente código a su archivo functions.php. Para que este código funcione, asegúrese de agregar también el primer código, es decir, el código que deshabilita la visualización de publicaciones y medios de otros usuarios. 

function fix_media_counts($views) {
  global $wpdb, $current_user, $post_mime_types, $avail_post_mime_types;
  $views = array();
  $_num_posts = array();
  $count = $wpdb->get_results( "

    SELECT post_mime_type, COUNT( * ) AS num_posts
    FROM $wpdb->posts
    WHERE post_type = 'attachment'
    AND post_author = $current_user->ID
    AND post_status != 'trash'
    GROUP BY post_mime_type

 ", ARRAY_A );

 foreach( $count as $row )
    $_num_posts[$row['post_mime_type']] = $row['num_posts'];
    $_total_posts = array_sum($_num_posts);
    $detached = isset( $_REQUEST['detached'] ) || isset( $_REQUEST['find_detached'] );

 if ( !isset( $total_orphans ) )
    $total_orphans = $wpdb->get_var("

        SELECT COUNT( * )
        FROM $wpdb->posts
        WHERE post_type = 'attachment'
        AND post_author = $current_user->ID
        AND post_status != 'trash'
        AND post_parent < 1

    ");

  $matches = wp_match_mime_types(array_keys($post_mime_types), array_keys($_num_posts));
 
  foreach ( $matches as $type => $reals )

    foreach ( $reals as $real )

      $num_posts[$type] = ( isset( $num_posts[$type] ) ) ? $num_posts[$type] + $_num_posts[$real] : $_num_posts[$real];
      $class = ( empty($_GET['post_mime_type']) && !$detached && !isset($_GET['status']) ) ? ' class="current"' : '';
      $views['all'] = "<a href='upload.php'$class>" . sprintf( __('All <span class="count">(%s)</span>', 'uploaded files' ), number_format_i18n( $_total_posts )) . '</a>';

   foreach ( $post_mime_types as $mime_type => $label ) {

    $class = '';
    if ( !wp_match_mime_types($mime_type, $avail_post_mime_types) )
      continue;

    if ( !empty($_GET['post_mime_type']) && wp_match_mime_types($mime_type, $_GET['post_mime_type']) )
      $class = ' class="current"';

    if ( !empty( $num_posts[$mime_type] ) )
      $views[$mime_type] = "<a href='upload.php?post_mime_type=$mime_type'$class>" . sprintf( translate_nooped_plural( $label[2], $num_posts[$mime_type] ), $num_posts[$mime_type] ) . '</a>';

  }

 $views['detached'] = '<a href="upload.php?detached=1"' . ( $detached ? ' class="current"' : '' ) . '>' . sprintf( __( 'Unattached <span class="count">(%s)</span>', 'detached files' ), $total_orphans ) . '</a>';

 return $views;
}

 Y eso, damas y caballeros, es un truco de código que le permite mostrar solo las publicaciones y los medios del usuario de WordPress actualmente conectado.

Compruebe si un usuario está conectado a WordPress

En el ajuste de código anterior, necesitábamos verificar si un usuario podía editar publicaciones. Pero si desea verificar si un usuario está conectado a WordPress a través de un código, puede usar el siguiente código:

if ( is_user_logged_in() ) {
    echo 'Welcome, registered user!';
} else {
    echo 'Welcome, visitor!';
};
 

Por otro lado, si está buscando una forma sencilla de saber si un usuario está registrado en el backend, puede usar el siguiente complemento: Cierre de sesión de WPForce o el complemento Who's Logged In.

wp forzar el cierre de sesión para ver si los usuarios han iniciado sesión

 

¿Necesita ayuda para hacer las cosas? ¡Prueba estos conciertos asequibles mejor calificados en Fiverr!

logotipo de Fiverr

Haga click aquí para encontrar expertos en arreglando problemas de WordPress.

Haga click aquí para crear un sitio web completo de WordPress.

 

 
Descargue la lista de 101 trucos de WordPress que todo bloguero debe conocer

101 trucos de WordPress

Haga clic aquí para descargar ahora
 
Sobre el autor
David Attard
Autor: David AttardPagina Web: https://www.linkedin.com/in/dattard/
David ha estado trabajando en o alrededor de la industria digital / en línea durante los últimos 18 años. Tiene una vasta experiencia en las industrias de software y diseño web utilizando WordPress, Joomla y los nichos que los rodean. Como consultor digital, su enfoque es ayudar a las empresas a obtener una ventaja competitiva utilizando una combinación de su sitio web y plataformas digitales disponibles en la actualidad.

Una cosa más... ¿Sabías que las personas que comparten cosas útiles como esta publicación también se ven IMPRESIONANTES? ;-)
Por favor deja un eficiente Comente con sus pensamientos, luego comparta esto en su (s) grupo (s) de Facebook que lo encontrarán útil y cosechemos los beneficios juntos. ¡Gracias por compartir y ser amable!

Divulgación: Esta página puede contener enlaces a sitios externos para productos que amamos y recomendamos de todo corazón. Si compra productos que le sugerimos, es posible que ganemos una tarifa de referencia. Tales tarifas no influyen en nuestras recomendaciones y no aceptamos pagos por reseñas positivas.

Autor (es) destacado en:  Logotipo de la revista Inc   Logotipo de Sitepoint   Logotipo de CSS Tricks    logotipo de webdesignerdepot   Logotipo de WPMU DEV   y muchos más ...