Cum să modifici ordinea articolelor în panoul de administrare?

27 sept. 2012, 18:27:25
Vizualizări: 23.9K
Voturi: 11

Cum pot schimba ordinea articolelor în panoul de administrare, astfel încât să fie afișate în ordine alfabetică după titlu, în loc de cele mai recente mai întâi?

0
Toate răspunsurile la întrebare 3
4
18

Dacă nu doriți să faceți clic mereu pe coloana "Titlu" pentru a sorta postările după titlu, puteți plasa acest cod în fișierul functions.php al temei WordPress active sau într-un plugin. Acest cod va sorta automat postările pentru dvs., astfel încât nu va trebui să faceți clic pe coloana titlu de fiecare dată.

Puteți utiliza acest cod pentru a seta ordinea implicită de sortare pe tipurile de postări.

/* Sortează postările în wp_list_table după coloană în ordine crescătoare sau descrescătoare. */
function custom_post_order($query){
    /* 
        Setează tipurile de postări.
        _builtin => true returnează tipurile de postări implicite din WordPress.
        _builtin => false returnează tipurile de postări personalizate înregistrate.
    */
    $post_types = get_post_types(array('_builtin' => true), 'names');
    /* Tipul de postare curent. */
    $post_type = $query->get('post_type');
    /* Verifică tipurile de postări. */
    if(in_array($post_type, $post_types)){
        /* Coloana Postării: de ex. titlu */
        if($query->get('orderby') == ''){
            $query->set('orderby', 'title');
        }
        /* Ordinea Postării: ASC / DESC */
        if($query->get('order') == ''){
            $query->set('order', 'ASC');
        }
    }
}
if(is_admin()){
    add_action('pre_get_posts', 'custom_post_order');
}

Puteți utiliza unele dintre aceste condiții ca exemplu...

/* Afectează toate tipurile de postări din array. */
if(in_array($post_type, $post_types)){

}

/* Afectează doar un anumit tip de postare din array-ul de tipuri de postări. */
if(in_array($post_type, $post_types) && $post_type == 'numele_tipului_de_postare'){

}

/* Afectează toate tipurile de postări din array, cu excepția unui anumit tip de postare. */
if(in_array($post_type, $post_types) && $post_type != 'numele_tipului_de_postare'){

}

Dacă doriți să aplicați această sortare pe TOATE tipurile de postări, indiferent dacă sunt "built-in" sau nu...

Schimbați asta: $post_types = get_post_types(array('_builtin' => true), 'names');

În asta: $post_types = get_post_types('', 'names');

27 sept. 2012 21:20:31
Comentarii

Este ok să folosești în interiorul funcției în loc să verifici înainte de acțiune if ( ! is_admin ) { return; }

urok93 urok93
1 oct. 2012 00:07:01

Presupun că ai putea face asta.

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

Trebuie să adaugi un "return $query;" înainte de sfârșitul funcției, altfel acest lucru nu va funcționa în versiunile mai noi de WordPress.

Jobst Jobst
20 apr. 2017 05:38:08

Cred că un plugin rulează această funcție și suprascrie funcția mea personalizată. Există vreun hook pentru a mă asigura că codul meu se execută în locul celui din plugin?

Thomas_Hoadley Thomas_Hoadley
20 aug. 2018 14:23:24
0

Ah, dă click pe acel mic titlu pentru a comuta sortarea alfabetică...

Imagine descriptivă a interfeței pentru sortare alfabetică

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

// Salvează valoarea câmpului personalizat
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');


// pentru adăugarea coloanei în zona de administrare a postărilor (adding column in admin post area stack exchange)
 
add_filter('manage_posts_columns', 'add_priority_column');
function add_priority_column($columns) {
    $columns['post_priority'] = 'Prioritate'; 
    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 dec. 2024 19:01:03