Deshabilitar eliminar usuario

2

Mi sitio tiene un tipo de publicación personalizado 'Portafolio'. Si un usuario tiene al menos un Portafolio, ¿cómo puedo desactivar la opción para eliminar ese usuario?

Encontré la acción / gancho delete_user , pero no parece correcto para este problema.

    
pregunta Denissio Inkognito 26.01.2016 - 15:44

2 respuestas

1

Al hacer clic en "eliminar", se iniciará la acción 'delete_user': enlace

Después de eso, puedes verificar si el usuario ha escrito al menos una publicación de "cartera".

add_action('delete_user', 'sw_portfolio_check');

function sw_portfolio_check( $user_id ) {
    $result = new WP_Query(
                array(
                    'author'=>$user_id,
                    'post_type'=>'portfolio',
                    'posts_per_page'=>1,
                )
            );
    if ( count($result->posts) !== 0 ){
        wp_die("User has a portfolio and can't be deleted");
    }
}
    
respondido por el Sören Wrede 27.01.2016 - 00:52
3

Desea desactivar la opción para eliminar . Si te refieres al botón de eliminar en la lista de usuarios en /wp-admin/users.php , puedes usar la clase user_row_actions para ocultar la 'eliminar 'enlace con el siguiente fragmento de código:

add_filter(
  'user_row_actions',
  function($actions, $user_object) {
    $result = new WP_Query(
                array(
                    'author'=> $user_object->ID,
                    'post_type'=>'portfolio',
                    'posts_per_page'=>1,
                )
            );
    if ( count($result->posts) !== 0 ){
      unset($actions['delete']);
    }
    return $actions;
  },
  1,2
);

El fragmento de código anterior solo oculta el enlace. No impide el acceso a la pantalla de borrado. Para hacer eso, necesitaremos más código:

add_action(
  'load-users.php',
  function() {
    if (isset($_GET['user'])) {
      $user_object = get_userdata($_GET['user']);
          $result = new WP_Query(
                        array(
                            'author'=> $user_object->ID,
                            'post_type'=>'portfolio',
                            'posts_per_page'=>1,
                        )
                    );
        if( count($result->posts) !== 0 ){
        wp_die('This user cannot be deleted');
        }
    }
  }  
);

¡Espero que esto te ayude bien!

    
respondido por el AddWeb Solution Pvt Ltd 30.01.2016 - 09:12

Lea otras preguntas en las etiquetas