通过meta_key对数组进行排序

时间:2016-02-29 11:47:57

标签: php arrays wordpress sorting

希望根据数字meta_key按升序对数组进行排序。

这是基于Facet WP插件的功能:https://facetwp.com/preserving-sticky-posts-in-templates/

如您所见,Facet WP提供的代码如下:

function fwp_preserve_sticky_posts( $query ) {
    if ( 'ids' == $query->get( 'fields' ) ) {
        return;
    }

    if ( isset( $query->query_vars['show_sticky'] ) ) {
        $matches = array();
        $sticky = (array) get_option( 'sticky_posts' );
        $post_in = (array) $query->query_vars['post__in'];

        foreach ( $sticky as $post_id ) {
            if ( false !== ( $pos = array_search( $post_id, $post_in ) ) ) {
                $matches[ $pos ] = $post_id;
            }
        }
        ksort( $matches ); // preserve order of sticky posts
        $query->query_vars['orderby'] = 'post__in';
        $query->query_vars['post__in'] = array_merge( $matches, $query->query_vars['post__in'] );
    }
}
add_action( 'pre_get_posts', 'fwp_preserve_sticky_posts' );

这实现了分离粘性和普通帖子的目的,除了我需要能够对$ matches数组的返回进行排序,但是符合以下条件,而不是发布ID:

'meta_key' => '_meta_date',
'orderby' => 'meta_value_num',
'order' => 'ASC'

我已经确定我需要在$ match上替换ksort,但我不知道如何。请有人帮忙吗?

谢谢!

0 个答案:

没有答案