使用GET_POST_TYPE仅查询自定义帖子类型

时间:2012-07-23 作者:Bassscape

我只需要查询自定义帖子类型-即我的WP安装中的所有帖子类型,不包括帖子和页面。我用过get_post_types 要生成我要查询的所有自定义帖子类型的字符串,请执行以下操作:

$args=array(
    \'public\'                => true,
    \'exclude_from_search\'   => false,
    \'_builtin\'              => false
); 
$output = \'names\'; // names or objects, note names is the default
$operator = \'and\'; // \'and\' or \'or\'
$post_types=get_post_types($args,$output,$operator); 

// Loop thru the cpts and assign a related taxonomy to a variable
$posttypes_array = "";
foreach ($post_types  as $post_type ) {
    $posttypes_array .= "$post_type, ";
}
$posttypes_array = rtrim($posttypes_array, \', \');
echo $posttypes_array;
变量的输出$posttypes_array 是否为字符串:

\'puzzles\', \'quizzes\', \'challenges\', \'tales\', \'can_you_help\'
我的问题是,我无法使用此变量查询所有这些帖子类型,如下所示:

$buildArgsAllQuestions = array( // Add out new query parameters
    \'post_type\' => array($posttypes_array),
    //\'post_type\' => $posttypes_array,
    \'orderby\' => \'date\',
    \'order\' => \'DESC\',
);
仅当我将此行用于post\\u类型时,我对所有自定义帖子的查询才起作用:

\'post_type\' => array( \'puzzles\', \'quizzes\', \'challenges\', \'tales\', \'can_you_help\' ),
有人能告诉我如何使用这个变量吗$posttypes_array 或类似于查询所有自定义posttype的内容,如下所示:\'post_type\' => array($posttypes_array) ?

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

尝试创建数组并进行检查,而不是创建字符串。

$posttypes_array = array();
foreach ($post_types  as $post_type ) {
    $posttypes_array[] = $post_type;
}
然后按如下方式形成查询

$buildArgsAllQuestions = array( // Add out new query parameters
    \'post_type\' => $posttypes_array,
    //\'post_type\' => $posttypes_array,
    \'orderby\' => \'date\',
    \'order\' => \'DESC\',
);

结束

相关推荐

如何提高这个QUERY_POSTS循环的性能呢?

我创建了一个WordPress页面模板,为我网站上的某些WordPress帖子构建一个定制的XML提要。具体来说,页面模板呈现XML,并且仅包括某些自定义帖子类型,并且仅当这些帖子包含特定元数据时。我正在使用这些数据将WordPress内容提供给iOS应用程序。它似乎工作得很好;然而,来自服务器的响应时间各不相同,并且经常失败。我的托管公司(MediaTemple)建议我可以通过提高数据库查询的效率来提高性能。这种查询有没有标准的优化提示?<?php $numposts = -1;