首页 > 解决方案 > 在 Wordpress 管理页面中对自定义列进行排序

问题描述

我正在尝试在管理编辑屏幕中对自定义列进行排序。该列包含一个整数值(投票计数)。

要生成列,我使用这个“标准”代码:

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 值的自定义列进行排序?

标签: wordpresscustomcolumn

解决方案


注册一列首先需要注册一列

<?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;
   } ?>

推荐阅读