wordpress shortcode rend également le contenu dans le tableau de bord
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.
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
).
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°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
).
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' );
0 commentaire