web-dev-qa-db-fra.com

Appliquez le filtre the_content, mais empêchez d'autres actions liées

J'ai un plugin qui affiche du contenu sur le front du site après l'application du filtre the_content au bloc de texte. Je le fais pour le formatage et la maintenance des liens et des images, etc.

Lorsque j'affiche mon contenu sur la face avant du site, les autres plug-in connectés à the_content provoquent des conflits. Par exemple, sharedaddy by jetpack s'accroche dans le_contenu et affiche les boutons de partage partout où le_content est utilisé.

Je peux le désactiver manuellement en supprimant le filtre, mais c'est loin d'être idéal car je ne suis pas sûr que tous mes utilisateurs n'utilisent pas sharedaddy. Donc, plutôt que d’ajouter le remove_filter pour sharedaddy, puis-je simplement supprimer tous les filtres liés au contenu de the_content pour mon plugin spécifique?

J'affiche mon contenu comme suit:

<?php echo apply_filters('the_content' , $this->optionVal['custom-message']); ?>

1
EHerman

S'il ne s'agit que de certaines zones de contenu, créez votre propre filtre et basez-le sur le filtre the_content d'origine.

Mettez ceci dans votre functions.php (trouvé dans wp-includes/default-filters.php)

add_filter( 'se152488_the_content', 'wptexturize'        );
add_filter( 'se152488_the_content', 'convert_smilies'    );
add_filter( 'se152488_the_content', 'convert_chars'      );
add_filter( 'se152488_the_content', 'wpautop'            );
add_filter( 'se152488_the_content', 'shortcode_unautop'  );
add_filter( 'se152488_the_content', 'prepend_attachment' );

Ensuite, utilisez le même filtre. N'hésitez pas à le renommer, mais donnez-lui un préfixe afin d'éviter tout conflit.

<?php 
   echo apply_filters('se152488_the_content' , $this->optionVal['custom-message']); 
?>

Vous devez être inclusif ou exclusif pour ce genre de chose, donc s'il y a d'autres filtres que vous VOULEZ des plugins, vous devrez aussi les ajouter manuellement.

2
Eric Holmes