web-dev-qa-db-fra.com

efface uniquement les tags spécifiques (comme <p>), mais conserve les autres tags (comme <br/>)

Je sais qu'il est facile de désactiver Wordpress en ajoutant les balises p et br avec:

remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );

mais je veux que Wordpress continue à ajouter <br> où il y a un saut de ligne. Je n'utilise que l'éditeur de texte, l'éditeur visuel est désactivé. Cela fonctionnait bien jusqu'à la dernière mise à jour de Wordpress 4.7 - maintenant, il ajoute des balises p de fermeture, sans les ouvrir comme </p>.

même essayé this plugin mais cela désactive aussi les balises br.

Tout moyen de désactiver les balises p et non les balises br dans le contenu du message? Je ne trouve rien sur Internet qui dise quelque chose à propos d'une solution.

3
whitelord

Vous feriez mieux de ne jamais désactiver ces actions (ce que vous dites). Au lieu de cela, insérez add_filter('the_content', 'MyFilter', 88 ); et créez cette fonction:

function MyFilter($content){
    $tags = array( 'p', 'span');
    ///////////////////////////////////////////////////
    ///////// HERE INSERT ANY OF BELOW CODE  //////////
    ///////////////////////////////////////////////////
    return $content;
}

======== MÉTHODE 1 ==========

$content= preg_replace( '#<(' . implode( '|', $tags) . ')(.*|)?>#si', '', $content);
$content= preg_replace( '#<\/(' . implode( '|', $tags) . ')>#si', '', $content);

======== MÉTHODE 2 ======

foreach ($tags as $tag) {
    $content= preg_replace('#<\s*' . $tag . '[^>]*>.*?<\s*/\s*'. $tag . '>#msi', '', $content);
}

======== MÉTHODE 3 ==========

DOMobjet (préféré): https://stackoverflow.com/a/31380542/2377343

6
T.Todua

Le filtre "the_content" est utilisé pour filtrer le contenu de la publication où la fonction de filtrage dans your_prefix_ptagfix force la recherche des balises <p> avant et après les balises ouvrantes des codes courts.

Ajoutez le code suivant à votre fichier de fonctions et faites-moi savoir si cela vous aidera.

add_action( 'after_setup_theme', 'your_prefix_theme_setup' );
function your_prefix_theme_setup(){
    add_filter( 'the_content', 'your_prefix_ptagfix' );

}

function your_prefix_ptagfix($content){   
    $array = array (
        '<p>[' => '[', 
        ']</p>' => ']',
    );

    $content = strtr($content, $array);
    return $content;
}
0
Maqk