我的问题是:
对于我的文章,我使用自定义的帖子类型“展览”,并发布所有其他新闻。我在一个查询中显示它们[\'post\\u type\'=数组(\'experiments\',\'posts\')]。
这个orderby parameter 对于帖子应该是发布日期,对于展览应该是自定义元值(项目结束日期)。这样,帖子将按以下顺序显示:
展览1(发布日期:2013年1月2日,结束日期:2013年4月4日)
从日期(posts)和结束日期元值(展览)定义PHP变量,然后按其排序
我想到了一个定义PHP变量(展览的结束日期元值,帖子的发布日期)的想法,并据此对wp\\U查询进行排序。我走的方向对不对?如果是,如何将变量合并到wp\\U查询中?我找到了一些相关的文章/问题,但迄今为止没有一篇对我有帮助。
Orderby筛选器
Orderby filter听起来也是一种方法:Orderby filter @Wordpress.org forums谢谢
///
约翰尼斯的解决方案正是我想要的。下面是我稍微修改过的函数:
function save_sort_meta( $post_id ) {
$prev_val = get_post_meta( $post_id, \'sort_date\', true );
/* set value only if not set yet (i.e. if this is a new post and not an update ) */
if ( \'exhibitions\' === $_POST[\'post_type\'] ) {
$my_meta = get_post_meta( $post_id, \'_my_meta\', true );
$datum_end_hidden = $my_meta[\'datum-end-hidden\'];
update_post_meta( $post_id, \'sort_date\', $datum_end_hidden);
} else {
/* using time() assuming "end_date" is a unix timestamp, adjust if not */
update_post_meta( $post_id, \'sort_date\', time());
}
}
add_action( \'save_post\', \'save_sort_meta\' );
我的问题是:$args = array(
\'showposts\' => \'22\',
\'post_type\' => array(\'post\',\'exhibitions\'),
\'post_status\' => \'publish\',
\'meta_key\' => \'sort_date\',
\'order\' => \'DESC\',
\'orderby\' => \'meta_value_num\'
);
出于某种原因,“post”帖子会停留在wp\\u查询的末尾(虽然当我回显自定义值“sort\\u date”时,它会正确显示,并且比experiments大,应该保持“bellow”)。这是否与我删除查看帖子更新的操作有关?我这样做是因为我也想在更新时更改值。
编辑:以上代码有效
好的,我发现问题出在哪里了-这很尴尬。:)“展览”帖子类型的“结束日期”元值由jQuery UI Datepicker提供,它以毫秒为单位保存日期。我所需要做的就是将$datum\\u end\\u hidden除以1000。:)
非常感谢!