显式定义的顺序问题中的另一个get_post()

时间:2013-10-31 作者:Randomize

我正在创建一个“循环”,它需要按照ID的定义顺序显示页面(而不是帖子)。到目前为止,我所做的是:

<?php
$ids = array(434, 814, 3660, 3235, 99, 1002, etc.);

add_filter(\'posts_orderby\', \'enforce_specific_order\');

function enforce_specific_order($orderby) {
    global $wpdb;
    $ids_as_text = join(",",$ids);
    return "FIND_IN_SET(".$wpdb->posts.".ID, \'".$ids_as_text."\') ASC";
}

global $post;
$args = array( \'posts_per_page\' => 20, \'post_type\' => \'page\', \'post__in\' => $ids );
$myposts = get_posts( $args );
foreach( $myposts as $post ) :  setup_postdata($post); ?>

<h2><?php the_title(); ?></h2>

<?php endforeach; remove_filter( current_filter(), __FUNCTION__ ); wp_reset_postdata(); ?>
我可以看到页面标题正确显示,但没有按照我期望的顺序显示$ids.

有什么想法吗?

1 个回复
最合适的回答,由SO网友:Zogot 整理而成

相反,您应该使用WP_Query

大概是这样的:

$specific_order_pages_query_args = array(
    \'post_type\' => \'page\',
    \'post__in\'  => $ids,
    \'orderby\'   => \'post__in\'
);

$specific_order_pages_query = new WP_Query( $specific_order_pages_query_args );
WP\\U查询的订单值post__in 是由供应商订购的特殊值post__in ID的

请参阅WP\\U查询中订单下的更多信息http://codex.wordpress.org/Class_Reference/WP_Query#Order_.26_Orderby_Parameters

结束

相关推荐

WP_QUERY ORDERBY POST__IN在循环中保持无效

我试图为主页查询一个自定义帖子数组,试图维护数组中给定的顺序。在某种程度上,这很好,WordPress可以找到帖子,但在循环中,顺序又被混淆了。首先,我使用pre_get_posts 钩子以更改主页上的主查询,如下所示:if ( is_home() && $query->is_main_query() ) { $query->set( \'post_type\', array( \'post\', \'page\', \'product\' ) );