[AUTOMATIQUE] Cet article a plus de 5 ans.
Il se peut donc que les informations qu'il fournit ne soient plus totalement exactes.

Si vous souhaitez ajouter un shortcode (ou autre chose) automatiquement avant ou après un contenu comme expliqué ici, vous pouvez soit le faire en utilisant la fonctions do_shortcode() ainsi qu’un filtre sur the_content().

Le problème que vous risquez de rencontrer est que the_content() contient le filtre wpautop() – qui ajoute automatiquement des balises <p> (paragraphe lors des sauts de ligne) – et il risque donc d’interpréter le contenu de votre shortcode ou de votre fonction de la même manière. Si la fonction appelé contient par exemple du script JS (pas biennn…), vous risquez d’avoir des <p> ou </br>  en plein milieu de vos fonctions.

La solution est d’appeler le shortcode grâce à sa fonction (et non le shortcode lui même) en y ajoutant les paramètres associés. On retire ensuite le filtre wpautop(), on ajoute le shortcode au contenu, puis on remet le filtre wpautop().

Voici donc la fonction, évidement, vous pouvez changer l’ordre d’ajout dans le contenu (avant ou après) en concaténant $content et $newContent dans l’ordre de votre choix.

function bweb_posts_ads($content){
	if ( !is_singular( 'post' ) )
	return $content;
	
	ob_start();
	$newContent.= LaFonctionDuSHORTCODE( array ( "parametre1" => "xxxx", "parametre2" => "xxx"));
	$newContent.= $content;
	$newContent.= ob_get_clean();

	return $newContent;
}
remove_filter( 'the_content', 'wpautop' );
add_filter('the_content', 'bweb_posts_ads', 10);
add_filter( 'the_content', 'wpautop',9 );

Attention, l’ordre des filtres (le dernière paramètre numérique) est important!

 

Article rédigé parBrice CAPOBIANCO

Autodidacte passionné par WordPress. J'aime apprendre et créer pour ensuite partager !

Coorganisateur des Meetups WordPress Rennes et fondateur de bweb.
Partager cet article

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