Cela doit être assez simple, mais je suis perplexe. Et je vais peut-être y aller à reculons.
Comment puis-je générer une option de base de données qui est un tableau dans un tableau get_posts?
J'ai une option dans la base de données qui stocke des identifiants de post dans le format de tableau `1234,5678 '. Je peux les récupérer et leur faire écho
$options = get_option( 'pu_theme_options' );
$newspostids = $options['pu_textbox'];
echo $newspostids;
donc je sais que je reçois la sortie `1234,5678 '. La base de données "option" n'est qu'un texte, enregistré à partir d'un champ de formulaire dans les options de thème.
Ce que je dois faire est d’obtenir les données de cette option dans un tableau get_posts
afin que je puisse afficher les publications par ID.
Ce dont j'ai besoin, c'est que get_posts
fonctionne comme ceci:
$news = get_posts( array(
'post_type' => 'post',
'post__in'=> array(1234,5678)
) );
Et, évidemment, cela ne fonctionne pas, placer la variable directement dans le tableau et s'attendre à ce qu'il produise `1234,5678 ':
$news = get_posts( array(
'post_type' => 'post',
'post__in'=> array($newspostids)
) );
Alors, comment cela devrait-il fonctionner?
Vous pouvez utiliser wp_parse_id_list()
pour assainir votre liste d'identifiants de publication séparés par des virgules. Il est défini comme:
function wp_parse_id_list( $list ) {
if ( !is_array($list) )
$list = preg_split('/[\s,]+/', $list);
return array_unique(array_map('absint', $list));
}
où nous pouvons voir qu'il renvoie aussi des valeurs de tableau uniques.
Notez que absint()
est défini comme étant abs( intval() )
et que la sortie maximale diffère de intval()
pour les systèmes 32 et 64 bits selon les docs PHP.
get_posts n'a pas de post__in "variable", c'est-à-dire dans wp_query, dans get_posts (ou get_pages), vous devez utiliser include, par exemple.
$news = get_posts(
array(
'post_type' => 'post',
'include' => $newspostids,
)
);