web-dev-qa-db-fra.com

Impossible d'afficher plusieurs types de publication dans la même requête (WPML WP_Query)

Je suis sûr qu'il y a une explication très facile à cela, mais je suis coincé. J'essaie simplement de mettre un élément simple et agréable de publications récentes en première page d'un site et, pour une raison quelconque, lorsque j'essaie d'utiliser:

$args = array( 
    'post_type' => array('post','recipes'), 
    'posts_per_page' => 4
);
query_posts( $args );
if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>

    ...

endwhile; 
wp_reset_postdata(); 

il ne montrera pas les recettes. La chose étrange est que si j'appelle 'post' et 'page', les deux seront affichés, mais dès que j'ajouterai 'recettes', cela affichera simplement le premier type demandé qui ne soit pas une recette. Est-ce que je manque quelque chose de facile ici?

Modifier:

Mis à jour avec l'instance WP_Query au lieu de query_posts, ne fonctionne toujours pas.

$argz= array(
'post_type' => array('post','recipes'), 
'posts_per_page' => 4
);

$my_query = new WP_Query($argz);

Ça ne marche toujours pas. Renvoie toujours la bonne requête var et tout, mais n'affiche pas les deux types de publication.

2
Rich

J'ai eu ce problème avec la requête sur deux types de publication personnalisés, à l'aide de WP_Query. Je n'ai eu aucun problème à interroger l'un ou l'autre type du tableau, mais pas les deux en même temps.

N'a pas marché:

$args = array( 
    'post_type' => array('custom_type_1','custom_type_2'), 
    'posts_per_page' => 4
);

A travaillé:

$args = array( 
    'post_type' => array('custom_type_1'), 
    'posts_per_page' => 4
);

A travaillé:

$args = array( 
    'post_type' => array('custom_type_2'), 
    'posts_per_page' => 4
);

Affreusement déroutant pour le moins.

Résolvez le problème en vous assurant que les deux types de publication personnalisés disposent de la case à cocher "Rendre" le nom de type de publication personnalisé "traduisible" pour WPML. WPML ne doit pas l’aimer si vous essayez d’interroger deux types de publication où l’un est traduisible et l’autre ne l’est pas.

(Je suis sur WordPress 3.4.1 et WPML 2.5.2 - plus tard à la date de ce post)

3
Michael Cox
  1. N'utilisez pas query_posts pour les boucles secondaires.
    Il s’agit simplement d’une recommandation générale sur les "pratiques optimales" et non de la cause de votre problème.
  2. Lorsque vous enregistrez le type de message, assurez-vous que 'public' => true
  3. Mettez ce qui suit dans un modèle quelque part et rapportez la sortie. Il renverra l'objet de chaque type de publication personnalisé enregistré et vérifiera si vous utilisez le nom correct et si public est défini sur true.

    $post_types = get_post_types( array( '_builtin' => false ), 'object' ); foreach ( $post_types as $post_type ) { var_dump( $post_type ); }

2
Chris_O

Sensationnel. vous ne savez pas exactement quel est le coupable (il va creuser plus loin), mais il semble que quelque chose à propos de WPML empêchait la requête SQL réelle de demander le type de message personnalisé en conjonction avec des messages et des pages standard. Quand j'ai désactivé WPML, cela a fonctionné. Merci pour toute l’aide apportée à tous. Je vais revenir sur cette question une fois que j’aurai une idée plus concrète de ce qui s’est passé.

1
Rich

Cela devrait fonctionner pour interroger plusieurs types de publication:

query_posts('post_type[]=post&post_type[]=page&post_type[]=event');

Vous pouvez même le tester directement dans votre navigateur,

example.com/?post_type[]=post&post_type[]=page
1
Rune