こんにちは
body の post-type-{投稿タイプ} クラスでセレクトできると思います。
ただし、エディター スタイル シート(add_editor_style)内では効かない(下記ページ参照)ようなので、別途 CSS を読み込む必要がありそうです。
https://stackoverflow.com/questions/60115893/wordpress-is-it-possible-to-use-post-type-as-part-of-a-css-selector-in-block-ed
こんにちは
@ishitaka さんがすでに解説済みの通りですが、
以下のように処理した場合には、
add_editor_style( 'style.css' );
style.cssに記述したスタイル
.post-type-post .is-root-container{
border:3px solid red;
}
editorで、実際にロードされるスタイル
.editor-styles-wrapper .post-type-post .is-root-container {
border: 3px solid red;
}
つまり、スタイルは加工されて(.editor-styles-wrapper)ロードされます。
このため、body.post-type-post, body.post-type-page を参照しようとしても出来なくなる。
.editor-styles-wrapper の孫要素(つまり、ブロックスタイルは、適用される)ということになります。
なので、body要素内のクラスを参照する場合には、別の方法でスタイルの加工が入らない方法で処理する必要があります。
以下のような手法をとることで、加工のないスタイルを追加できます。
add_action( 'enqueue_block_editor_assets', 'emulsion_block_editor_assets' );
function emulsion_block_editor_assets(){
wp_register_style( 'emulsion-fse', get_template_directory_uri() . '/fse.css', array(), time(), 'all' );
wp_enqueue_style( 'emulsion-fse' );
}
余談
add_editor_style()を使って、エディタ用のスタイルをフロント用とは別に追加するといった流れは、最近では過去のものになりつつあるように思います。
add_editor_styleを使っている場合に、フロント用のCSSを使用するケースが増えています
投稿エディタに関していえば、フロント用のCSSに、どうしてもエディタ用にスタイルが必要な場合は、.editor-styles-wrapper .wp-block-xxxx{}などとして、エディタ用のスタイルを書くことが多くなってきています。
トピック投稿者
nrmy
(@nrmy)
ishitakaさん、nobitaさん
ご回答いただきましてありがとうございます。
お教えいただいたとおりにやってみたところ、うまくいきました!
今回、エディター上でpostかpageかを判別する方法として、当初、get_post_type()、$typenow、$pagenowなどを試してみたのですが、うまくいかず、ご相談させていただいた次第です。
なお、現在公開しているサイトでは、nobitaさんがおっしゃるとおり、一般公開しているスタイルの一部を、エディター用のスタイルにコピーしているのですが、一般公開しているスタイルに手を加えると、2つの間に差が出てきてしまうという問題がありました。
そこで、リニューアルのために現在作っているものでは、一般公開しているスタイルをエディターでもそのまま用いるようにして、一般公開のスタイルとエディターのスタイルとで常に一致するようにしようとしています。