wordpress shortcode rend également le contenu dans le tableau de bord

Publié par Jean-Michel le

J’utilise un simple shortcode wordpress

function my_recent_post()
{
 echo 'hello';
}
add_shortcode( 'recent', 'my_recent_post' );

avec le shortcode [récent] et son fonctionnement correct et visible en première page, mais le problème est qu’il imprime également le bonjour dans le tableau de bord. ci-dessous est la capture d’écran, quelqu’un peut-il aider s’il vous plaît.

entrez la description de l'image ici

Mise à jour:

J’essayais en fait d’afficher des publications, alors pouvez-vous m’aider, car cela rend les listes de publications dans le tableau de bord lui-même comme le « bonjour ». J’ai essayé:

function lorem_function() { 
    global $post; 
    $args = array( 'posts_per_page' => 10, 'order'=> 'ASC', 'orderby' => 'title' ); 
    $postslist = get_posts( $args ); 
    foreach ( $postslist as $post ) : 
        setup_postdata( $post ); ?>
        <div> 
        <?php the_date(); ?> <br /> <?php the_title(); ?> <?php the_excerpt(); ?> 
        </div> 

    <?php endforeach; 
    wp_reset_postdata(); 
    return; 
} 
add_shortcode('lorem', 'lorem_function');

Solution n°1 trouvée

Sur la base de vos commentaires pour moi et Nikita Dudarev, ce que vous devez faire est de créer une variable pour contenir toutes les informations de publication, puis de les renvoyer. En utilisant la fonction que vous avez publiée comme exemple :

function lorem_function() { 
    global $post; 
    $args = array( 'posts_per_page' => 10, 'order'=> 'ASC', 'orderby' => 'title' ); 
    $postslist = get_posts( $args ); 

    // create a variable to hold the post information
    $html ="";
    foreach ( $postslist as $post ) : 
        setup_postdata( $post ); 

        $backgroundstyle = ""; 

        // get the featured image and set it as the background
        if ( has_post_thumbnail() ) { // make sure the post has a featured image
            $imageurl = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'medium' ); // you can change "medium" to "thumbnail or full depending on the size you need
            // add the css for the background image. You can include background-size etc ad required
            $backgroundstyle = "background-image: url('".$imageurl[0]."');";
        }

        // add the information to the variable
        $html .= '<div style="'.$backgroundstyle.'">';
        $html .= get_the_date();
        $html .= "<br />";
        $html .= get_the_title();
        $html .= get_the_excerpt();
        $html .= "</div>";

    endforeach; 
    wp_reset_postdata(); 

    return $html; 
} 
add_shortcode('lorem', 'lorem_function');

Notez que the_date(), the_title()et the_excerpt()affichent tous les informations (tout comme echo).

Lire également:  La requête de boucle Wordpress ne fonctionne pas

Au lieu de cela, vous devez utiliser get_the_date(), get_the_title()et get_the_excerpt()– ceux-ci obtiennent les mêmes informations, mais au lieu de les afficher directement, ils les renvoient sous forme de variable que vous pouvez ensuite stocker dans votre chaîne html à renvoyer.

Mise à jour:

Comme vous ne voulez pas utiliser le nom de la variable sur chaque ligne pour quelque raison que ce soit, vous pouvez le faire comme ceci :

$html .= "<div>".get_the_date()."<br />".get_the_title().get_the_excerpt()."</div>";

Je ne sais pas pourquoi vous voulez spécifiquement le changer pour faire cela – cela ne fait absolument aucune différence dans la façon dont cela fonctionne, cela rend simplement plus difficile la lecture et l’identification des erreurs 🙂

Lire également:  Wordpress : Thème Divi en conflit avec Yoast SEO

Solution n°2 trouvée

Votre fonction doit renvoyer une valeur, pas une sortie

function my_recent_post()
{
 return 'hello';
}
add_shortcode( 'recent', 'my_recent_post' );

Solution n°3 trouvée

Sur la base de vos commentaires pour moi et Nikita Dudarev, ce que vous devez faire est de créer une variable pour contenir toutes les informations de publication, puis de les renvoyer. En utilisant la fonction que vous avez publiée comme exemple :

function lorem_function() { 
    global $post; 
    $args = array( 'posts_per_page' => 10, 'order'=> 'ASC', 'orderby' => 'title' ); 
    $postslist = get_posts( $args ); 

    // create a variable to hold the post information
    $html ="";
    foreach ( $postslist as $post ) : 
        setup_postdata( $post ); 

        $backgroundstyle = ""; 

        // get the featured image and set it as the background
        if ( has_post_thumbnail() ) { // make sure the post has a featured image
            $imageurl = wp_get_attachment_image_src( get_post_thumbnail_id($post->ID), 'medium' ); // you can change "medium" to "thumbnail or full depending on the size you need
            // add the css for the background image. You can include background-size etc ad required
            $backgroundstyle = "background-image: url('".$imageurl[0]."');";
        }

        // add the information to the variable
        $html .= '<div style="'.$backgroundstyle.'">';
        $html .= get_the_date();
        $html .= "<br />";
        $html .= get_the_title();
        $html .= get_the_excerpt();
        $html .= "</div>";

    endforeach; 
    wp_reset_postdata(); 

    return $html; 
} 
add_shortcode('lorem', 'lorem_function');

Notez que the_date(), the_title()et the_excerpt()affichent tous les informations (tout comme echo).

Lire également:  Wordpress : Manière sécurisée de permalien de lier des pages à l'intérieur de footer.php

Au lieu de cela, vous devez utiliser get_the_date(), get_the_title()et get_the_excerpt()– ceux-ci obtiennent les mêmes informations, mais au lieu de les afficher directement, ils les renvoient sous forme de variable que vous pouvez ensuite stocker dans votre chaîne html à renvoyer.

Mise à jour:

Comme vous ne voulez pas utiliser le nom de la variable sur chaque ligne pour quelque raison que ce soit, vous pouvez le faire comme ceci :

$html .= "<div>".get_the_date()."<br />".get_the_title().get_the_excerpt()."</div>";

Je ne sais pas pourquoi vous voulez spécifiquement le changer pour faire cela – cela ne fait absolument aucune différence dans la façon dont cela fonctionne, cela rend simplement plus difficile la lecture et l’identification des erreurs 🙂

Solution n°4 trouvée

Votre fonction doit renvoyer une valeur, pas une sortie

function my_recent_post()
{
 return 'hello';
}
add_shortcode( 'recent', 'my_recent_post' );
Catégories : Wordpress

Jean-Michel

Jean-Michel est en charge de la partie blog du site. Il met en place la stratégie de contenu et répond aux questions fréquentes sur Wordpress.

0 commentaire

Laisser un commentaire

Avatar placeholder

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *