【问题标题】:Add some posts to TOP using WP_Query使用 WP_Query 将一些帖子添加到 TOP
【发布时间】:2014-10-20 12:40:19
【问题描述】:

我在 post_type="post" 中有很多帖子。我想在一个页面上显示所有使用 WP_query 的帖子,但这些帖子有 customfield name="pinned_to_top" 应该在循环中排在第一位,而没有此自定义字段的其他帖子将会出现。

我尝试过使用 orderby,但我做不到。

我正在使用此代码,但它只会给我那些具有自定义字段 =“固定”的帖子,而不是其他帖子。

$query = array(
    'category_name' => 'blog',
    'paged'=> $paged,

     'meta_query' => array(
        array(
            'key'     => 'pinned',
            'value'   => 'yes',
            'compare' => 'OR',
        ),
        ),
    'posts_per_page' => '10',
);
$wp_query = new WP_Query($query);

添加这个自定义字段的主要动机是,我想在 LOOP 的顶部添加一些重要的帖子。

如果有人经历过,请告诉我?

【问题讨论】:

  • 为什么不只创建 2 个循环。第一个只有客户使用pinned_to_top,第二个不包括那些。
  • 我也在用分页,帖子不要再重复了。这就是为什么我不使用两个循环。
  • 在循环前使用usort对返回的$posts进行排序

标签: wordpress


【解决方案1】:

我认为你应该在法典中做类似的事情。我没有尝试过,但我认为某处会有解决方案......

$query = array(
'category_name' => 'blog',
'paged'=> $paged,

 'meta_query' => array(
    array(
        'key'     => 'pinned',
        'value'   => 'yes',
        'compare' => 'IN',
    ),
    array(
        'key'     => 'pinned',
        'value'   => 'yes',
        'compare' => 'NOT IN',
    ),
 ),
'posts_per_page' => '10',

);

但在您的情况下,需要使用第一个是 IN,而第二个是 NOT IN。 所以使用 2 个数组。

如果它不起作用,请检查http://codex.wordpress.org/Class_Reference/WP_Querymeta_compare 部分。也许你应该使用==!=

【讨论】:

  • 我试过了,但它不起作用,这里只显示自定义字段“固定”的帖子。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-07-01
  • 1970-01-01
  • 1970-01-01
  • 2018-05-11
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多