Sorting posts by ACF field

时间:2015-02-05 作者:Guit4eva

我试图按“prempost”ACF字段对帖子进行排序,但它不起作用(只显示默认顺序)。有人能看出我错在哪里吗?ACF支持人员建议我使用http\\u build\\u query,我已经完成了以下操作,但仍然没有雪茄烟:/

<?php 
  $meta_query = array(
  \'relation\' => \'OR\',
  array(
    \'key\' => \'prempost\',
    \'compare\' => \'IN\'
  ),
array(
    \'key\' => \'prempost\',
    \'compare\' => \'NOT IN\'
  )
);

$args = array(
\'meta_query\' => $meta_query,
\'orderby\' => \'meta_value\',
\'meta_key\' => \'prempost\',
\'order\' => \'ASC\',
);?>

<?php $new_args = http_build_query($args); ?>
<?php $posts = query_posts($query_string.\'&\'.$new_args); ?>

//begin loop
<?php if (have_posts()) : while (have_posts()) : the_post(); ?>

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

您不会在一个查询中找到这个问题,您将需要执行两个查询。第一个查询将保存保存元键的帖子,第二个查询将保存没有元键的帖子。

请注意:never 使用query_posts 除非你有意破坏东西

你可以试试这样的

$args1 = array(
    \'orderby\' => \'meta_value\',
    \'meta_key\' => \'prempost\',
    \'order\' => \'ASC\',
);
$query1 = new WP_Query($args1);

//Do your stuff here

$args2 = array(
    \'meta_key\' => \'prempost\',
    \'compare\' => \'NOT IN\'
    \'order\' => \'ASC\',
);
$query2 = new WP_Query($args2);

//Do your stuff here
您也可以尝试一次获取所有帖子,然后使用php对它们进行排序usort()

结束

相关推荐