以数组ID=>名称的形式获取所有帖子

时间:2018-08-26 作者:Wojciech Wyszyński

在示例中,我需要以数组形式查询我的所有帖子:

\'options\' => [
   \'Post ID\'  => __(\'Post Name\'),
   \'Post ID\'  => __(\'Post Name\'),
],
我该怎么做?

尝试了这个,但它只给了我ID:

function query_posts_as_array(){
   $args = array(
      \'post_status\'   => \'publish\',
      \'fields\'        => \'ids\',
);
$result_query = new WP_Query( $args );

$ID_array = $result_query->posts;
wp_reset_postdata();
return $ID_array;

3 个回复
最合适的回答,由SO网友:Tom J Nowell 整理而成

你想让WP_Query 在一个API调用中提供所有内容,但这行不通。

相反,将其分解为多个步骤,例如:

创建一个空列表,获取每个帖子的所有帖子:将其ID和名称添加到列表中

SO网友:Wojciech Wyszyński

我发现此代码:

$args = array( \'posts_per_page\' => -1, \'fields\' => \'\', ); 
$posts_from_query = get_posts( $args ); 
$id_list = []; 

foreach( $posts_from_query as $single) { 
   $id_list[ $single->ID ] = $single->post_title; 
} 
return $id_list; 
打印此内容:

Array ( [0] => Nulla molestie venenatis odio nec pulvinar. [1] => Video Post ) 
它从0打印数字。。。而不是发布ID。我会做错什么?

SO网友:Anson W Han

如果您只需要post ID和post title,那么可以使用一个简单的SQL查询,并使用标准的Wordpress查询函数避免多个步骤和php循环。

global $wpdb;
$option_list = $wpdb->get_results( "SELECT id, post_title FROM wp_6gdyzh_posts" );
这种方法是a bit more efficient as it cuts down on the amount of querying/processing done by your webserver for this particular need.

但是,无论是使用这种直接SQL查询方法,还是使用查询所有帖子然后循环获取标题/构建数组的方法,如果要查询的帖子/帖子类型经常被添加到站点,您都需要确保对主查询应用限制。如果最终确实如此,您可能希望向查询中添加排序选项和限制选项。

结束

相关推荐

对unctions.php的更改不起作用

我正在尝试更改我的功能。php文件。我刚刚为悉尼主题设置了我的孩子主题,并测试了样式表,效果很好。我希望对我的woocommerce结账页面进行更改,实际上只是创建了一个回音,以确保它正常工作。。。我尝试使用子主题配置器插件来设置我的子主题,并确保代码中没有错误(因为我也无法使样式表正常工作)这是我的职能。php:<?php add_action( \'wp_enqueue_scripts\', \'sydney_child_enqueue_styles\' ); functi