web-dev-qa-db-fra.com

Ajouter une classe de post à l'iframe TinyMCE?

Je souhaite ajouter des styles à editor-style.css, en fonction de la catégorie à laquelle l'article actuel appartient.

Par conséquent, j'aimerais ajouter les classes de publication - à l'aide de get_post_class() - au corps de l'iframe TinyMCE.

J'ai vu cette question , mais il s'agit d'ajouter des classes via JavaScript, et j'ai besoin que cela se fasse via PHP pour pouvoir utiliser get_post_class(). Je ne peux pas non plus utiliser le filtre admin_body_class, car cela ne concerne pas l'iframe TinyMCE.

Comment puis-je ajouter les cours de l'article à l'iframe TinyMCE?

4
Lea Cohen

Le filtre que vous recherchez est tiny_mce_before_init. En utilisant cela, nous pouvons nous connecter au 'init_array' de TinyMCE et ajouter des classes de corps:

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;

}

Nous rejoignons les classes post avec un espace pour les convertir d'un tableau en chaîne, comme l'exige TinyMCE, et nous vérifions également que nous avons bien un objet post valide, pour éviter les erreurs si vous utilisez TinyMCE ailleurs. (comme dans les widgets ou similaires).

2
Tim Malone