这里有几个关于在管理部分对自定义项进行排序的问题。然而,我在任何地方都找不到具体的答案。这是我的具体问题:
我正在使用MagicFields创建几个与事件相关的字段(每个帖子都是“事件”或音乐会)。其中一个字段是事件日期。我想1)在admin event write面板中将事件日期显示为一个单独的列,2)自动将该列升序排序。到目前为止,我已经注册了该列,显示了它,并将其注册为可排序。这是我粘贴在函数中的代码。php文件:
// Register a new column in the admin Post area
function event_date_column_register( $columns ) {
$columns[\'event_date\'] = __( \'Event Date\', \'my-plugin\' );
return $columns;
}
add_filter(\'manage_edit-post_columns\', \'event_date_column_register\');
// Display the column content
function event_date_column_display( $column_name, $post_id ) {
if ( \'event_date\' != $column_name )
return;
$event_date = get(\'date_of_event\');
echo $event_date;
}
add_action( \'manage_posts_custom_column\', \'event_date_column_display\', 10, 2 );
// Register the column as sortable
function event_date_column_register_sortable( $columns ) {
$columns[\'event_date\'] = \'event_date\';
return $columns;
}
add_filter( \'manage_edit-post_sortable_columns\', \'event_date_column_register_sortable\' );
function event_date_column_orderby( $vars ) {
if ( isset( $vars[\'orderby\'] ) && \'event_date\' == $vars[\'orderby\'] ) {
$vars = array_merge( $vars, array(
\'meta_key\' => \'event_date\',
\'orderby\' => \'meta_value_num\'
) );
}
return $vars;
}
add_filter( \'request\', \'event_date_column_orderby\' );
因此,“事件”出现在帖子管理区域,如下所示——但当我尝试按该字段排序时,我的所有帖子都会消失。
Image Here
我知道我需要把约会时间转换成长时间(
strtotime();
) 排序之前,但在何处以及如何排序?根据评论线程
here (搜索“像符咒一样工作”),你可以写一些长的查询,但我不知道它是否正确,在哪里通过该查询,或者其他什么。
我是一个新手,所以提前谢谢你的帮助,如果我不够彻底,请原谅。
SO网友:Hameedullah Khan
你需要改变orderby
值到meta_value
在里面event_date_column_orderby
, 我也不确定get(\'event_date\')
您正在使用,因此我在下面的代码中将其替换为get_post_meta
.
我刚刚测试了下面的代码,它按日期排序很好。
// Register a new column in the admin Post area
function event_date_column_register( $columns ) {
$columns[\'event_date\'] = __( \'Event Date\', \'my-plugin\' );
return $columns;
}
add_filter(\'manage_edit-post_columns\', \'event_date_column_register\');
// Display the column content
function event_date_column_display( $column_name, $post_id ) {
if ( \'event_date\' != $column_name )
return;
$event_date = get_post_meta( $post_id, \'event_date\', true );
echo $event_date;
}
add_action( \'manage_posts_custom_column\', \'event_date_column_display\', 10, 2 );
// Register the column as sortable
function event_date_column_register_sortable( $columns ) {
$columns[\'event_date\'] = \'event_date\';
return $columns;
}
add_filter( \'manage_edit-post_sortable_columns\', \'event_date_column_register_sortable\' );
function event_date_column_orderby( $vars ) {
if ( isset( $vars[\'orderby\'] ) && \'event_date\' == $vars[\'orderby\'] ) {
$vars = array_merge( $vars, array(
\'meta_key\' => \'event_date\',
\'orderby\' => \'meta_value\'
) );
}
return $vars;
}
add_filter( \'request\', \'event_date_column_orderby\' );