自動整形とビジュアルモードを無効化してあり、コンテンツエディタにHTMLタグ、スクリプト等全部書く、というサイトの更新を依頼されています。
こういうサイト、たまにあります。
固定ページごとにテンプレートファイルが用意されていて、これらにハードコーディングする、なんてサイトも稀にありますな、、、
上記サイトでランディングページを量産?するらしく、テンプレートを用意して欲しいとのこと。
HTMLタグを全部書いていくのは面倒だし、エンドユーザーが書けるとも思えないので、テンプレートごとに自動整形とビジュアルモードが切り替わるようにしたい。
以下、functions.phpで指定してあるものを、同じくfunctions.phpで指定しなおす、という例です。
自動整形
「remove_filter( ‘the_content’, ‘wpautop’ )」が指定してあるので、特定テンプレートではこれを無効化するように変更。
add_filter( 'the_content', 'wpautop_filter', 9 );
function wpautop_filter( $content ){
$remove_filter = true;
//特定テンプレートの自動整形を有効化
if( is_page_template( 'page-lp.php' ) ){
$remove_filter = false;
}
if ( $remove_filter ){
remove_filter( 'the_content', 'wpautop' );
remove_filter( 'the_excerpt', 'wpautop' );
}
return $content;
}
参考記事はページIDで指定していますが、ここだけ「テンプレートごと」に変更。
例では「page-lp.php」で自動整形が有効になります。
※拡張子込みのファイル名
ビジュアルモード
「add_filter(‘user_can_richedit’, ‘__return_false’)」で無効化してあるので、同じくテンプレートごとに切り替える。
function disable_visual_editor_in_page(){
$post_id = $_GET['post'];
$template_slug = get_page_template_slug( $post_id );
if( $template_slug == 'page-lp.php' ){
}else{
add_filter('user_can_richedit', '__return_false');
}
}
function disable_visual_editor_filter(){
return false;
}
add_action('load-post.php', 'disable_visual_editor_in_page');
add_action('load-post-new.php', 'disable_visual_editor_in_page');
参考:WordPressで特定の固定ページのみビジュアルエディタを非表示にする簡単な方法・ソースあり
こちらもページIDからテンプレートごとに変更。
こっちは書く前の動作なので、ちょっと複雑。
以上で自動整形とビジュアルモードが切り替わります。
今例は該当サイトの事情でテンプレートごとに切り替えていますが、「投稿タイプごと」も同様の処理で可能と思います。