web-dev-qa-db-fra.com

Supprimer l'echo du shortcode

Je viens de commencer à jouer avec les shortcodes et, en raison de mon manque de connaissances en php, je suis incapable de comprendre comment faire fonctionner ce shortcode sans utiliser écho php.

Quelqu'un peut-il m'aider à réviser mon code?

// SPONSORS Shorcode

function sponsors_shortcode($atts) {

extract(shortcode_atts(array(
    "name" => "sponsors",
), $atts));

$args = array(
    "post_type" => "sponsors",
    "name" => $name,
);
$query = new WP_Query($args);

if($query->have_posts()) : while($query->have_posts()) : $query->the_post();

if(get_field('group')) {

    echo "<ul class='sponsors'><h2>" , the_title() , "</h2>";

    while(has_sub_field('group')) {

        $attachment_id = get_sub_field('image'); 
        $size = 'sponsorimage'; 
        $image = wp_get_attachment_image_src( $attachment_id, $size , false );

        $link = get_sub_field('link');

        echo "<li>";
            echo "<a href='" , $link , "' target='_blank'>";
                echo "<img src='" , $image[0] , "' />";
            echo "</a>";
        echo "</li>";
    }
    echo "</ul>";
}


endwhile; endif; wp_reset_query();

}

add_shortcode("sponsors", "sponsors_shortcode");
1
ngearing

L'instruction 'echo' ne fonctionnera pas dans la fonction shortcode. La fonction shortcode ne fait que renvoyer la variable; Donc, votre code sera comme ça:

if(get_field('group')) {
    $html = '';
    $html.= "<ul class='sponsors'><h2>" , get_the_title() , "</h2>";

    while(has_sub_field('group')) {

        $attachment_id = get_sub_field('image'); 
        $size = 'sponsorimage'; 
        $image = wp_get_attachment_image_src( $attachment_id, $size , false );

        $link = get_sub_field('link');

        $html.= "<li>";
        $html.= "<a href='" , $link , "' target='_blank'>";
        $html.= "<img src='" , $image[0] , "' />";
        $html.= "</a>";
        $html.= "</li>";
    }
    $html.= "</ul>";
}
endwhile; endif; wp_reset_query();

return $html;
0
Chinmoy Kumar Paul