web-dev-qa-db-ja.com

カスタム投稿タイプのみを照会するには、get_post_typesを使用してください

カスタム投稿タイプのみをクエリする必要があります。つまり、WP install内のすべての投稿タイプで、投稿とページを除くものです。 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_typeにこの行を使用した場合にのみ機能します。

'post_type' => array( 'puzzles', 'quizzes', 'challenges', 'tales', 'can_you_help' ),

誰もが私がどのように私が変数$posttypes_arrayを使うことができるか、またはこのようなすべてのカスタムのposttypeを問い合わせることに類似する何かを言うことができますか:'post_type' => array($posttypes_array)

1
Bassscape

文字列を作成する代わりに、配列を作成して確認してください。

$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',
);
3
Joshua Abenazer