Donc j'avais demandé (avec le recul une jolie non-question) à https://wordpress.stackexchange.com/questions/49705/a-little-help-cleanup-from-a-real -coder/49712 # 49712 et l'un des commentaires était de ne pas utiliser query_posts, mais plutôt WP_Query. J'ai donc creusé un peu et essayé d'implémenter cela, maintenant le code ne fonctionne pas complètement. Le MultiPostThumbnails ne tire pas le img Je reçois seulement le the_post_thubnail pas img supplémentaire. Qu'est-ce que je fais mal ici?
function efs_get_slider(){
$slider= '<div id="ctslider">
<div class="flexslider">
<ul class="slides">';
$my_posts = new WP_Query();
$efs_query= "post_type=slider-image";
$my_posts->query($efs_query);
if($my_posts->have_posts()) : while ($my_posts->have_posts()) : $my_posts->the_post();
$flexID = $my_posts->ID;
$img1= wp_get_attachment_image( get_post_thumbnail_id($flexID),'full',0 );
$imagemain = preg_replace( '/(width|height)=\"\d*\"\s/', "", $img1 );
if (class_exists('MultiPostThumbnails')) {
$image_name = 'feature-image-2';
if (MultiPostThumbnails::has_post_thumbnail('slider-image', $image_name)) {
$image_id = MultiPostThumbnails::get_post_thumbnail_id(
'slider-image',
$image_name,
$flexID
);
$attr = array('class' => "secondaryslider");
$image = wp_get_attachment_image( $image_id, 'full', false, $attr );
$imagesecondary = preg_replace(
'/(width|height)=\"\d*\"\s/',
"",
$image
);
}
};
$cttitle = get_the_title();
$ctexcerpt = get_the_excerpt();
$slider.='<li><div class="fourcol secondaryimg">'.$imagesecondary.'</div>';
$slider.='<div class="threecol flex-caption"><h3>'.
$cttitle.'</h3><p>'.$ctexcerpt.'</p></div>';
$slider.='<div class="fivecol last">'.$imagemain.'</div></li>';
endwhile; endif; wp_reset_postdata();
$slider.= '</ul>
</div></div>';
return $slider;
}
Je ne connais pas MultiPostThumbnails, mais je suppose que votre problème est le suivant:
$flexID = $my_posts->ID;
Ce code semble essayer d'obtenir l'ID de l'objet WP_Query lui-même. Je ne pense pas que cela existe. Même si c'est le cas, cela ne vous fera pas beaucoup de bien.
Utilisez plutôt ceci:
$flexID = get_the_ID();
Ce code obtient l'ID de la publication actuelle dans la boucle.
En général, veillez à consulter la page de codex WP_Query . Vous pouvez resserrer les choses un peu. Par exemple, toute votre requête peut être sur une seule ligne:
$my_posts = new WP_Query( 'post_type=slider-image' );