J'essaie donc d'ajouter un bouton à la fin de mon blog, voici le code que j'ai dans le plugin jusqu'à présent:
<?php
/*
Plugin Name: etc....
*/
function shares_content() { ?>
<div class='social-shares-container'>
<a href='https://www.facebook.com/sharer/sharer.php?u=<?php echo the_permalink(); ?>'>Share on Facebook</a>
</div> <?php
}
function shares_add_buttons($content) {
global $post;
if (!is_page() && is_object($post)) {
return $content . shares_content();
}
return $content;
}
add_filter('the_content', 'shares_add_buttons');
?>
Cela ajoute le lien juste avant mon contenu, mais si je fais quelque chose comme ceci, il ajoute le nouveau contenu à l'endroit souhaité (après the_content
):
function shares_add_buttons($content) {
global $post;
if (!is_page() && is_object($post)) {
return $content . 'some random content';
}
return $content;
}
Quelqu'un pourrait-il me dire pourquoi c'est s'il vous plaît?
Votre fonction shares_content
renvoie directement le contenu, ce qui ne fonctionnera pas si vous essayez d'affecter les résultats à une variable ou de les utiliser dans une instruction return
dans une autre fonction.
Vous pouvez le changer en return
la chaîne:
function shares_content() {
$content = "<div class='social-shares-container'><a href='https://www.facebook.com/sharer/sharer.php?u=%s'>Share on Facebook</a></div>";
return sprintf( $content, get_permalink() );
}
Il convient également de souligner ici l'utilisation de get_permalink()
. Si vous regardez le code source, cette fonction a aussi return
s sa valeur. Il existe une autre fonction API, the_permalink()
, qui contient echo
au lieu de return
. Cela briserait également la sortie de votre filtre. La plupart des fonctions WordPress ont deux versions comme celle-ci.
Dans cette ligne:
return $content . shares_content();
Vous concaténez le contenu d'origine avec le résultat de la fonction shares_content
. Donc, cela semble correct, mais alors ...
Dans cette fonction:
function shares_content() { ?>
<div class='social-shares-container'>
<a href='https://www.facebook.com/sharer/sharer.php?u=<?php echo the_permalink(); ?>'>Share on Facebook</a>
</div> <?php
}
vous ne renvoyez rien, donc cette fonction n’a aucun résultat, donc rien n’est ajouté au contenu de votre filtre.
Mais aussi ... Cette fonction fait écho à div avec le lien, de sorte que le contenu soit imprimé, lorsque la fonction est exécutée, de sorte qu'il soit imprimé avant le contenu ...