¿Cómo Cambiar el Orden de las Entradas en el Admin?

27 sept 2012, 18:27:25
Vistas: 23.9K
Votos: 11

¿Cómo puedo cambiar el orden de las entradas en el panel de administración, para que se muestren alfabéticamente según el título, en lugar de mostrar primero las más recientes?

0
Todas las respuestas a la pregunta 3
4
18

Si no deseas tener que hacer clic siempre en la columna "Título" para ordenar tus publicaciones por título, puedes colocar este código en el archivo functions.php de tu tema activo de WordPress o dentro de un plugin. Esto ordenará automáticamente tus publicaciones por ti, para que no tengas que hacer clic en la columna de título cada vez.

Puedes usar esto para establecer el orden de clasificación predeterminado en tipos de publicaciones.

/* Ordena publicaciones en wp_list_table por columna en orden ascendente o descendente. */
function custom_post_order($query){
    /* 
        Establece los tipos de publicaciones.
        _builtin => true devuelve los tipos de publicaciones predeterminados de WordPress.
        _builtin => false devuelve tipos de publicaciones personalizados registrados.
    */
    $post_types = get_post_types(array('_builtin' => true), 'names');
    /* El tipo de publicación actual. */
    $post_type = $query->get('post_type');
    /* Verifica los tipos de publicaciones. */
    if(in_array($post_type, $post_types)){
        /* Columna de publicación: ej. título */
        if($query->get('orderby') == ''){
            $query->set('orderby', 'title');
        }
        /* Orden de publicación: ASC / DESC */
        if($query->get('order') == ''){
            $query->set('order', 'ASC');
        }
    }
}
if(is_admin()){
    add_action('pre_get_posts', 'custom_post_order');
}

Puedes usar algunas de estas condiciones de ejemplo...

/* Afecta a todos los tipos de publicaciones en el array. */
if(in_array($post_type, $post_types)){

}

/* Afecta solo a un tipo de publicación específico en el array de tipos de publicaciones. */
if(in_array($post_type, $post_types) && $post_type == 'tu_nombre_de_tipo_de_publicacion'){

}

/* Afecta a todos los tipos de publicaciones en el array, excepto a un tipo específico. */
if(in_array($post_type, $post_types) && $post_type != 'tu_nombre_de_tipo_de_publicacion'){

}

Si deseas aplicar este ordenamiento en TODOS los tipos de publicaciones, independientemente de si son "built-in" o no...

Cambia esto: $post_types = get_post_types(array('_builtin' => true), 'names');

Por esto: $post_types = get_post_types('', 'names');

27 sept 2012 21:20:31
Comentarios

¿Está bien usar dentro de la función en lugar de verificar antes de la acción if ( ! is_admin ) { return; }

urok93 urok93
1 oct 2012 00:07:01

Supongo que podrías hacer eso.

Michael Ecklund Michael Ecklund
1 oct 2012 18:13:52

Debes agregar un "return $query;" antes del final de la función, de lo contrario esto no funcionará en versiones posteriores de WordPress.

Jobst Jobst
20 abr 2017 05:38:08

Creo que un plugin está ejecutando esta función y anulando mi función personalizada. ¿Existe algún hook para asegurarme de que se ejecute mi código en lugar del de los plugins?

Thomas_Hoadley Thomas_Hoadley
20 ago 2018 14:23:24
0

Ah, haz clic en ese pequeño título para alternar el orden alfabético...

Descripción de la imagen

27 sept 2012 20:05:36
0
function custom_field() {
    add_meta_box(
        'post_priority', 
        'Prioridad del Post', 
        'priority_meta_box', 
        'post', 
        'normal', 
        'low' 
    );
}
add_action('add_meta_boxes', 'custom_field'); 

function priority_meta_box($post) {
    
    $priority = get_post_meta($post->ID, 'post_priority', true);
  
    ?>
    <label for="post_priority">Prioridad del Post:</label>
    <input type="number" id="post_priority" name="post_priority" value="<?php echo $priority; ?>" min="1">
    <?php
    
    
}

// Guardar el valor del campo personalizado
function handle_priority_submit($post_id) {
    
    if (array_key_exists('post_priority', $_POST)) {
        $priority = $_POST['post_priority'];
        if ($priority >=1){
            update_post_meta($post_id,'post_priority',$priority);
        }
 }
 }
 add_action('save_post','handle_priority_submit');


 function sort_posts_by_priority_in_admin($query) {
    
    if ($query->get('post_type') === 'post') {

        $query->set('meta_key', 'post_priority');
        $query->set('orderby', 'meta_value_num');
        $query->set('order', 'ASC');    
    }
}
add_action('pre_get_posts', 'sort_posts_by_priority_in_admin');


// Para agregar columna en el área de administración de posts (agregar columna en el área de posts admin stack exchange)
 
add_filter('manage_posts_columns', 'add_priority_column');
function add_priority_column($columns) {
    $columns['post_priority'] = 'Prioridad'; 
    return $columns; 
}


add_action('manage_posts_custom_column', 'priority_column_value', 10, 2);
function priority_column_value($column, $post_id) {
    if ($column == 'post_priority') {
        $priority = get_post_meta($post_id, 'post_priority', true); 
        echo esc_html($priority ? $priority : '—'); 
}}
6 dic 2024 19:01:03