J'ai ajouté un nouveau type de message personnalisé à mon thème Wordpress, mais celui-ci refuse de s'afficher sur la page d'accueil. J'ai essayé de mettre
<?php query_posts( array( 'post_type' => array('post', 'reviews') ) );?>
mais cela ne semble pas fonctionner, il boucle juste mes messages normaux. Toute suggestion serait grandement utile.
Voici un pastie de mon index si quelqu'un veut le voir:
J'éviterais l'utilisation de query_posts - cela force une autre tentative d'accès à la base de données. Il existe de nombreuses autres façons d’accrocher et de modifier la requête avant que les publications ne soient récupérées. pre_get_posts
est l'un d'entre eux.
Pour afficher plusieurs types d'article sur la page d'accueil (pages et articles dans cet exemple):
<?php
add_action('pre_get_posts', 'wpse70606_pre_posts');
/**
* Change that query! No need to return anything $q is an object passed by
* reference {@link http://php.net/manual/en/language.oop5.references.php}.
*
* @param WP_Query $q The query object.
* @return void
*/
function wpse70606_pre_posts($q)
{
// bail if it's the admin, not the main query or isn't the (posts) page.
if(is_admin() || !$q->is_main_query() || !is_home())
return;
// whatever type(s) you want.
$q->set('post_type', array('post', 'page'));
}
Cela irait dans le fichier functions.php
de vos thèmes ou dans un plugin .
Je voudrais essayer ceci en premier:
global $wp_query;
$args = array_merge( $wp_query->query, array(
'posts_per_page' => -1,
'post_type' => 'any',
) );
query_posts( $args );
Cela conservera la requête d'origine et affichera chaque message (-1 signifie "tous les messages"), de chaque type de message. Cela devrait vous aider à résoudre le problème.