管理画面、自動整形やビジュアルモード切替の条件分岐

ワードプレス

自動整形とビジュアルモードを無効化してあり、コンテンツエディタに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');

こちらもページIDからテンプレートごとに変更。

こっちは書く前の動作なので、ちょっと複雑。

 

以上で自動整形とビジュアルモードが切り替わります。

今例は該当サイトの事情でテンプレートごとに切り替えていますが、「投稿タイプごと」も同様の処理で可能と思います。