web-dev-qa-db-ja.com

特定のタグ(<P>など)のみを削除し、他のタグ(<BR/>など)は残します

Wordpressがpタグとbrタグの両方を追加するのを無効にするのは簡単です。

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

しかし、改行があるところでWordpressが<br>を追加し続けたいと思います。テキストエディタのみを使用しています。ビジュアルエディタは無効です。それは最近のWordpress 4.7への更新までうまく働いていました - 今それは</p>のようなそれらを開くことなく、いくつかの閉じるpタグを追加しています。

this pluginでも試しましたがbrタグも無効にします。

投稿コンテンツのpタグではなくbrタグを無効にするだけの方法はありますか?私は解決策について何かを言うインターネット上で何かを見つけることができません。

3
whitelord

あなたはそれらのアクションを無効にしないほうがいいでしょう(あなたが言うこと)。代わりに、add_filter('the_content', 'MyFilter', 88 );を挿入して、そのような関数を作成してください。

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

========方法1 =========

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

========方法2 ======

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

========方法3 =========

_ dom _ object(推奨): https://stackoverflow.com/a/31380542/2377343

6
T.Todua

"the_content"フィルタは、ショートコードの開始タグの前後に、your_prefix_ptagfixのfilter関数が<p>タグを検索するように強制する投稿のコンテンツをフィルタするために使用されます。

次のコードをあなたの関数ファイルに追加し、それが助けになるかどうか私に知らせてください。

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