programing

워드프레스 관리 페이지에서 사용자 정의 열 정렬

mailnote 2023. 10. 3. 11:14
반응형

워드프레스 관리 페이지에서 사용자 정의 열 정렬

관리자 편집 화면에서 사용자 지정 열을 정렬하려고 합니다.열에는 정수 값(투표 횟수)이 포함되어 있습니다.

열을 생성하려면 다음과 같은 "표준" 코드를 사용합니다.

add_filter( 'manage_edit-entries_sortable_columns', 'cutify_entries_columns_sortable' );
function cutify_entries_columns_sortable( $columns ) 
{
    $columns['entry_vote_count'] = 'entry_vote_count';
    return $columns;
}

add_filter( 'manage_entries_posts_columns', 'cutify_entries_columns_head' );
function cutify_entries_columns_head($defaults) 
{
    unset( $defaults['date'] );
    $defaults['entry_vote_count'] = 'Votes';
    return $defaults;
}

add_action('manage_entries_posts_custom_column', 'cutify_entries_columns_content', 10, 2);
function cutify_entries_columns_content($column_name, $post_ID) 
{
    if ($column_name == 'entry_vote_count') 
    {
        $number = rand(1,1000);

        print intVal($number);
    }
}

이 열을 정렬하려고 합니다.저는 여기와 다른 사이트에서 많은 답변을 읽었고 값이 post_meta에서 나온 것이라면 이것을 정렬하는 것에 대해 알고 있지만 보시다시피 이 경우 값은 함수 호출에서 반환 값에서 나온 것입니다.

post_meta 값을 기준으로 하지 않고 사용자 지정 열을 정렬하는 방법이 있습니까?

열 등록하기 열 등록을 위해 가장 먼저 필요한 것은 열 등록입니다.

<?php 
add_action( 'manage_cake_posts_custom_column', 'my_cake_column_content', 10, 2 );
function my_cake_column_content( $column_name, $post_id ) {
    if ( 'slices' != $column_name )
        return;
    //Get number of slices from post meta
    $slices = get_post_meta($post_id, 'slices', true);
    echo intval($slices);
} ?>

열 정렬 가능하게 만들기

<?php 
 add_filter( 'manage_edit-cake_sortable_columns', 
 'my_sortable_cake_column' );
 function my_sortable_cake_column( $columns ) {
 $columns['slices'] = 'slice';

  //To make a column 'un-sortable' remove it from the array
  //unset($columns['date']);

   return $columns;
   } ?>

플러그인을 개발하지 않을 경우 가장 간단한 방법은 관리 컬럼과 같은 기존 플러그인을 사용하는 것입니다. 이를 통해 주문, 컬럼 추가 등 여러 고급 작업을 수행할 수 있기 때문입니다.

사용자 지정을 추가해야 합니다.query_orderby로.WP_Querywp가 사용자 지정 열로 게시물 주문을 받으려 할 때.다음과 같이:

add_action( 'pre_get_posts', 'my_entry_vote_orderby' );
function my_entry_vote_orderby( $query ) {
    global $wpdb;

    // Only filter in the admin
    if( ! is_admin() )
        return;

    $orderby = $query->get( 'orderby');

    // Only filter if orderby is set to 'entry_vote_count'
    if( 'entry_vote_count' == $orderby ) {
        // We need the order - default is ASC
        $order = isset( $query->query_vars ) && isset( $query->query_vars[ 'order' ] ) && strcasecmp( $query->query_vars[ 'order' ], 'desc' ) == 0 ? 'DESC' : 'ASC';

        // Order the posts by vote count
        $query->query_orderby = "ORDER BY ( SELECT vote_count FROM {$wpdb->posts} posts WHERE posts.post_type = 'post' AND posts.post_status='publish' ) {$order}";
    }
}

언급URL : https://stackoverflow.com/questions/50266460/sorting-custom-column-in-wordpress-admin-pages

반응형