对于那些经历过同样问题的人,我终于找到了一种方法。首先,我创建了一个额外的CMB,如下所示:
$cmb->add_field( array(
\'id\' => $prefix . \'session_gooddatebegin\',
\'type\' => \'hidden\',
) );
然后我使用
save_post
. 如果CPT“会话”正在更新,感谢
$update
, 我假设用户在CMB中选择了一个日期
session_datebegin
. 因此,我们现在可以更新隐藏日期字段,并将其转换为正确的格式:
add_action( \'save_post\', \'good_dates\', 99, 3);
function good_dates( $post_id, $post, $update ) {
if (get_post_type($post_id)!=\'session\') {
return;
}
//if the post is being updated
if ($update==true) {
//begin date
$datebegin = get_post_meta( $post_id, \'session_datebegin\', true );
//put to the expected form with date() and strtotime()
$datebegingood = date("mdY", strtotime($datebegin));
//update the hidden variable
update_post_meta($post_id, \'session_gooddatedeb\', $datebegingood );
}
}
最后,可以在存档页面中使用与之前相同的参数执行排序:
$args = array(
\'post_type\' => \'session\',
\'posts_per_page\' => -1,
\'meta_key\' => \'session_datebegin\',
\'orderby\' => \'session_datebegin\',
\'order\' => \'ASC\'
);