web-dev-qa-db-fra.com

Supprimer wpautop du contenu en shortcode/supprimer les espaces dans la mise en mémoire tampon

J'utilise le plugin Mailchimp ( http://wordpress.org/extend/plugins/mailchimp/ ) et il a un shortcode qui utilise la mise en mémoire tampon de sortie pour récupérer le code de son widget et le cracher dans le contenu. Cependant, le code du widget a beaucoup d'espace blanc. Les filtres the_content génèrent des sauts de ligne inutiles (comme après les entrées masquées) et des balises p vides partout ... ce qui le rend inutilisable. Je supprime le shortcode pour ajouter le mien, mais je ne sais pas quoi faire pour empêcher le filtre wordpress wpautop de devenir fou. Ma pensée initiale était de supprimer les espaces entre les balises HTML, mais je ne sais pas comment s'y prendre.

idéalement, le plugin concentrerait une chaîne à renvoyer au lieu d'utiliser la mise en mémoire tampon de sortie, mais je ne sais pas s'ils s'en soucieront un jour.

6
helgatheviking

Vous n'avez pas besoin d'un plugin pour faire cela. Ajoutez simplement 3 lignes de code à la fin du fichier functions.php dans votre thème actif:

remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 99 );
add_filter( 'the_content', 'shortcode_unautop', 100 );
7
MaximOrlovsky

C'est une solution intéressante, mais elle désactive automatiquement tous les codes abrégés indésirables.

J'ai écrit un script qui vous permet d'exécuter les tâches suivantes:

include "shortcode-wpautop-control.php";
chiedolabs_shortcode_wpautop_control(array('yourshortcode'));

Il vous permet de désactiver wpautop pour des codes courts spécifiques au lieu de tous.

Encore une fois, j'ai écrit le script. Je ne veux pas promouvoir par moi-même, mais comme je le mets à jour à l'avenir, je le mettrai à jour sur github, il est donc inutile de poster le code ici.

Vous pouvez voir le script sur https://github.com/chiedolabs/shortcode-wpautop-control

3
Chiedo

Il existe une fonction WordPress permettant de faire ce travail correctement. Pas besoin d'utiliser une fonction personnalisée ou un plugin pour le faire. Utilisez simplement la fonction shortcode_unautop($pee) pour supprimer wpautop du contenu en shortcode. Ici, $pee est la chaîne requise.

0
Eh Jewel