web-dev-qa-db-ja.com

TinyMCE iframeにpostクラスを追加しますか?

現在の投稿が属するカテゴリに基づいて、editor-style.cssにスタイルを追加します。

したがって、私はpostクラスをget_post_class()を使ってTinyMCE iframeの本体に追加したいと思います。

この質問 を見たことがありますが、それはJavaScriptを介してクラスを追加することに関するもので、PHPを介して行う必要があります。そのため、get_post_class()を使用できます。 TinyMCE iframeに対応していないため、admin_body_classフィルタも使用できません。

TinyMCEのiframeに投稿のクラスを追加するにはどうすればいいですか?

4
Lea Cohen

フィルタはtiny_mce_before_initです。これを使って、TinyMCEの 'init_array'にフックしてボディクラスを追加することができます。

add_filter( 'tiny_mce_before_init', 'wpse_235194_tiny_mce_classes' );

function wpse_235194_tiny_mce_classes( $init_array ){

  global $post;

  if( is_a( $post, 'WP_Post' ) ){
    $init_array['body_class'] .= ' ' . join( ' ', get_post_class( '', $post->ID ) );
  }

  return $init_array;

}

TinyMCEで要求されているように配列から文字列に変換するためにスペースを使ってpostクラスに参加しています。また、TinyMCEを他の場所で使用している場合はエラーを避けるために実際に有効なpostオブジェクトがあることも確認します。 (ウィジェットなどで).

2
Tim Malone