tohokuaikiのチラシの裏

技術的ネタとか。

WordPressで特定の投稿タイプで特定の部分だけ自動整形のPタグを消す (wpautopを動作させない)

filterの削除・追加とショートコードを使う

custom_posttype投稿タイプの場合。

<?php
    /* 特定の投稿タイプはautopをしない */
    remove_filter('the_content','wpautop');
    add_filter('the_content' , function($content){
        $post_type = get_post_type();
        if ($post_type != 'custom_posttype'){
            $content = wpautop($content);
        }
        return $content;
    });
    add_shortcode('wpautop', function($attr, $content){
        $post_type = get_post_type();
        if ($post_type == 'custom_posttype'){
            $content = wpautop($content);
        }
        return $content;
    });

で、本文では、

この部分はautopが効く。

[wpautop]
この部分は、そのまま出る。
この部分は、そのまま出る。
[/wpautop]

という感じ。