web-dev-qa-db-fra.com

Trier automatiquement la liste des publications wp-admin par une clé méta

J'utilise ce code suivant dans mon fichier de fonctions pour masquer et ajouter des colonnes personnalisées à mon écran de post-édition dans wp-admin.

J'essaie maintenant de faire trier la liste des messages en fonction d'un champ méta (nom). J'ai lu de nombreux tutoriels sur la procédure à suivre, mais je ne trouve rien qui corresponde à ce que j'ai.

Je n'ai pas besoin que la colonne soit triable, je veux simplement que la liste se trie automatiquement par une clé méta personnalisée. Et, juste pour votre information, je n'utilise pas de type de message personnalisé. C'est juste le type de message régulier.

Quelqu'un peut-il me pousser dans la bonne direction sur la façon de procéder?

    //Add a First and Last Name column to the post edit table
function topo_modify_post_table( $column ) {
    $column['first_name'] = 'First Name';
    $column['last_name'] = 'Last Name';

    return $column;
}
add_filter( 'manage_posts_columns', 'topo_modify_post_table' );


function topo_modify_post_table_row( $column_name, $post_id ) {

    $custom_fields = get_post_custom( $post_id );

    switch ($column_name) {
        case 'first_name' :
            ?><a style="font-weight:bold;" href="<?php echo admin_url(); ?>post.php?post=<? echo get_the_ID(); ?>&action=edit"><?php the_field('actor-first-name'); ?></a><?php
            break;
        case 'last_name' : ?>
            <a style="font-weight:bold;" href="<?php echo admin_url(); ?>post.php?post=<? echo get_the_ID(); ?>&action=edit"><?php the_field('actor-last-name'); ?></a><?php
            break;

        default:
    }
}

add_filter( 'manage_posts_custom_column', 'topo_modify_post_table_row', 10, 2 );




//Remove columns
add_filter('manage_post_posts_columns', 'ST4_columns_remove_category');

// REMOVE DEFAULT COLUMNS
function ST4_columns_remove_category($defaults) {
    // to get defaults column names:
    // print_r($defaults);
    unset($defaults['comments']);
    unset($defaults['date']);
    unset($defaults['author']);
    unset($defaults['title']);
    return $defaults;
}
3
Eckstein

Quelque chose comme ça devrait marcher:

function wpa84258_admin_posts_sort_last_name( $query ){
    global $pagenow;
    if( is_admin()
        && 'edit.php' == $pagenow
        && !isset( $_GET['orderby'] )
        && !isset( $_GET['post_type'] ) ){
            $query->set( 'meta_key', 'last_name' );
            $query->set( 'orderby', 'meta_value' );
            $query->set( 'order', 'ASC' );
    }
}
add_action( 'pre_get_posts', 'wpa84258_admin_posts_sort_last_name' );
4
Milo