web-dev-qa-db-fra.com

Utilisez get_post_types pour interroger uniquement les types de publication personnalisés

J'ai besoin d'interroger uniquement les types de publication personnalisés, c'est-à-dire tous les types de publication de mon WP installation, à l'exclusion des publications et des pages. J'ai utilisé get_post_types pour créer une chaîne de tous les types de publication personnalisée que je souhaite interroger:

$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;

La sortie de la variable $posttypes_array est la chaîne suivante:

'puzzles', 'quizzes', 'challenges', 'tales', 'can_you_help'

Mon problème est que je ne peux pas utiliser cette variable pour interroger tous ces types de publication comme ceci:

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

Ma requête pour toutes les publications personnalisées ne fonctionne que lorsque j'utilise cette ligne pour post_type:

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

Quelqu'un peut-il me dire comment utiliser la variable $posttypes_array ou quelque chose de similaire pour interroger tous les types de messages personnalisés, comme celui-ci: 'post_type' => array($posttypes_array)?

1
Bassscape

Au lieu de créer une chaîne, essayez de créer un tableau et vérifiez.

$posttypes_array = array();
foreach ($post_types  as $post_type ) {
    $posttypes_array[] = $post_type;
}

Et ensuite, formez la requête comme suit

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