web-dev-qa-db-fra.com

passé de query_posts à WP_query, ne fonctionne pas maintenant?

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;
}
1
Brian Thornton

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' );
1
mrwweb