wordpress - 帖子表中的可排序自定义列
问题描述
我在 wordpress 管理帖子表中添加了一个自定义列,但我无法对其进行排序,按钮正在工作,但实际上没有任何反应。
add_filter( 'manage_edit-post_columns', 'new_column');
function new_column( $columns ) {
$column_meta = array( 'meta' => 'Views' );
$columns = array_slice( $columns, 0, 5, true ) + $column_meta + array_slice( $columns, 2, NULL, true );
return $columns;
}
add_action( 'manage_posts_custom_column' , 'custom_columns' );
function custom_columns( $column ) {
global $post;
switch ( $column ) {
case 'meta':
$metaData = get_post_meta( $post->ID, 'penci_post_views_count', true );
echo $metaData;
break;
}
}
add_filter( 'manage_edit-post_sortable_columns', 'register_sortable_columns' );
// Register the column as sortable
function register_sortable_columns( $columns ) {
$columns['meta'] = 'Views';
return $columns;
}
解决方案
您快到了。但是,由于帖子查看计数是数字(我假设),您需要向请求添加一个过滤器以定义它要被评估为这样。添加此过滤器,您应该对已有的内容感到满意。
我还建议将您的字段从meta
to重命名,views
以免在其他人查看此代码或使用诸如 meta 之类的核心词时混淆问题。
add_filter( 'manage_edit-post_columns', 'new_column' );
function new_column( $columns ) {
$column_meta = array( 'views' => 'Views' );
$columns = array_slice( $columns, 0, 5, true ) + $column_meta + array_slice( $columns, 2, NULL, true );
return $columns;
}
add_action( 'manage_posts_custom_column', 'custom_columns' );
function custom_columns( $column ) {
global $post;
switch ( $column ) {
case 'views':
$metaData = get_post_meta( $post->ID, 'penci_post_views_count', true );
echo $metaData;
break;
}
}
add_filter( 'manage_edit-post_sortable_columns', 'register_sortable_columns' );
// Register the column as sortable
function register_sortable_columns( $columns ) {
$columns['views'] = 'views';
return $columns;
}
add_filter( 'request', 'views_columns_orderby' );
// Filter the request to evaluate the meta as a number.
function views_columns_orderby( $vars ) {
if ( isset( $vars['orderby'] ) && 'views' === $vars['orderby'] ) {
$vars = array_merge( $vars,
array(
'meta_key' => 'penci_post_views_count',
'orderby' => 'meta_value_num',
)
);
}
return $vars;
}
推荐阅读
- r - 使用 `R` 中的 `modelsummary::datasummary_balance` 摆脱 `N`
- c# - 如何在 EF CosmosDB 中更新和保存子对象?
- php - 在 PHP 中使用关联数组的特定任务的问题
- docker - 码头集装箱修剪;仅删除在给定时间戳之前停止的容器
- python - 按数据框分组并拆分为列
- apache-spark - 如何使用 pyspark 将列表添加到 RDD
- flask - 使用 Flask 时,为什么要使用 url_for() 方法来提供静态文件?为什么不能只使用相对路径?
- javascript - Highcharts 本地 CSV 问题
- recursion - 与python龟相比,超过了最大递归深度
- python - 为什么最大递归调用会出现此错误?