wordpress - 在 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 值的自定义列进行排序?
解决方案
注册一列首先需要注册一列
<?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;
} ?>
推荐阅读
- firebase - Firebase 分析事件参数未显示在控制台中
- c# - 将null映射到[NotNull]时如何使AutoMapper崩溃?
- java - 检索包含逗号 Apache DB 的 VARCHAR 数据
- javascript - 如何在 Parse SDK 中运行复杂查询
- javascript - Firebase 错误每个 then() 都应该返回一个值
- html - 如何让 Nuxt.js 预渲染页面的完整 HTML?
- .net - 是为每个项目安装一个 nuget 包,还是为整个解决方案全局安装更好?
- amazon-web-services - 如何检测 S3 中未映射到我们数据库的孤立对象?
- javascript - 我的 React 版本有问题
- python - TypeError: get_bind() 得到了一个意外的关键字参数