按自定义活动日期字段对管理区域进行排序

时间:2011-05-27 作者:Jeremy

这里有几个关于在管理部分对自定义项进行排序的问题。然而,我在任何地方都找不到具体的答案。这是我的具体问题:

我正在使用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 (搜索“像符咒一样工作”),你可以写一些长的查询,但我不知道它是否正确,在哪里通过该查询,或者其他什么。

我是一个新手,所以提前谢谢你的帮助,如果我不够彻底,请原谅。

2 个回复
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\' );

SO网友:bcorkins

是否可以反转输出顺序?我试过:

        $vars = array_merge( $vars, array(
        \'meta_key\' => \'tf_events_startdate\',
        \'orderby\' => \'meta_value\',
    \'order\' => \'DESC\'
    ) 
但运气不好。

结束

相关推荐

WordPress nonce和check admin referer需要帮助

在我开始之前,请注意,我对任何类型的WordPress/PHP安全性都是新手。几天前,我的朋友要求我为他的主题创建主题选项,所有设置都很好,但他过去的主题几乎没有小问题,我想确保Nonce and check\\u admin\\u referer设置正确。以下是我使用的:http://codex.wordpress.org/Function_Reference/check_admin_referer http://codex.wordpress.org/WordPress_Nonces现在我的问题是: