Come Modificare l'Ordine dei Post nel Pannello Admin?

27 set 2012, 18:27:25
Visualizzazioni: 23.9K
Voti: 11

Come posso modificare l'ordine dei post nel pannello di amministrazione, in modo che vengano visualizzati in ordine alfabetico secondo il titolo, invece che dal più recente?

0
Tutte le risposte alla domanda 3
4
18

Se non desideri cliccare sempre sulla colonna "Titolo" per ordinare i tuoi articoli per titolo, puoi inserire questo codice nel file functions.php del tuo tema WordPress attualmente attivo, oppure all'interno di un plugin. Questo ordinerà automaticamente sempre i tuoi articoli per te, così non dovrai cliccare ogni volta sulla colonna del titolo.

Puoi usare questo codice per impostare l'ordinamento predefinito sui tipi di articoli.

/* Ordina gli articoli in wp_list_table per colonna in ordine crescente o decrescente. */
function custom_post_order($query){
    /* 
        Imposta i tipi di articoli.
        _builtin => true restituisce i tipi di articoli predefiniti di WordPress. 
        _builtin => false restituisce i tipi di articoli personalizzati registrati. 
    */
    $post_types = get_post_types(array('_builtin' => true), 'names');
    /* Il tipo di articolo corrente. */
    $post_type = $query->get('post_type');
    /* Controlla i tipi di articoli. */
    if(in_array($post_type, $post_types)){
        /* Colonna Articolo: es. title */
        if($query->get('orderby') == ''){
            $query->set('orderby', 'title');
        }
        /* Ordine Articolo: ASC / DESC */
        if($query->get('order') == ''){
            $query->set('order', 'ASC');
        }
    }
}
if(is_admin()){
    add_action('pre_get_posts', 'custom_post_order');
}

Puoi usare alcune di queste condizioni di esempio...

/* Influisce su tutti i tipi di articoli nell'array. */
if(in_array($post_type, $post_types)){

}

/* Influisce solo su un tipo di articolo specifico nell'array dei tipi di articoli. */
if(in_array($post_type, $post_types) && $post_type == 'your_post_type_name'){

}

/* Influisce su tutti i tipi di articoli nell'array, tranne un tipo specifico. */
if(in_array($post_type, $post_types) && $post_type != 'your_post_type_name'){

}

Se desideri applicare questo ordinamento su TUTTI i tipi di articoli, indipendentemente dal fatto che siano "built-in" o meno...

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

In questo: $post_types = get_post_types('', 'names');

27 set 2012 21:20:31
Commenti

Va bene usarlo all'interno della funzione invece di verificare prima dell'azione if ( ! is_admin ) { return; }

urok93 urok93
1 ott 2012 00:07:01

Suppongo che potresti farlo.

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

Devi aggiungere un "return $query;" prima della fine della funzione, altrimenti non funzionerà nelle versioni più recenti di WordPress.

Jobst Jobst
20 apr 2017 05:38:08

Penso che un plugin stia eseguendo questa funzione e sovrascrivendo la mia funzione personalizzata. C'è un hook per assicurarmi che sia il mio codice a essere eseguito invece di quello dei plugin?

Thomas_Hoadley Thomas_Hoadley
20 ago 2018 14:23:24
0

Ah, clicca su quel cosino del titolo per attivare/disattivare l'ordinamento alfabetico...

Descrizione immagine qui

27 set 2012 20:05:36
0
function custom_field() {
    add_meta_box(
        'post_priority', 
        'Priorità Articolo', 
        '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">Priorità Articolo:</label>
    <input type="number" id="post_priority" name="post_priority" value="<?php echo $priority; ?>" min="1">
    <?php
    
    
}

// Salva il valore del campo personalizzato
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');


// Per aggiungere una colonna nell'area di amministrazione degli articoli
 
add_filter('manage_posts_columns', 'add_priority_column');
function add_priority_column($columns) {
    $columns['post_priority'] = 'Priorità'; 
    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