web-dev-qa-db-ja.com

メタキーでwp-admin投稿リストを自動ソートする

Wp-adminの編集後の画面にカスタム列を非表示にして追加するために、私は自分の関数ファイルで次のコードを使用しています。

私は今、投稿メタフィールド(姓)でソートするために投稿リストを取得しようとしています。私はこれを行う方法について多くのチュートリアルを読みましたが、私は自分の持っているものと一致するものは何も見つけることができません。

列をソート可能にする必要はありません。リストをカスタムメタキーで自動的にソートするようにしたいだけです。ちなみに、私はカスタム投稿タイプを使用していません。これは通常の投稿タイプです。

誰かがこれを行う方法について正しい方向に私を押し込むことはできますか?

    //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

このようなものでうまくいくはずです。

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