Проверьте, включен ли пользовательский тип отправки для кнопок TinyMCE

Я добавляю кнопки TinyMCE в свой плагин, и они работают, но я хочу, чтобы эти кнопки отображались только для определенного типа сообщений. Я следовал этому руководству, если это помогает:

WordPress Shortcode TinyMCE Button Tutorial Part 2

Как я могу получить эту проверку, если они редактируют / публикуют сообщение в настраиваемом типе сообщений, скажем, newpages ?

Если вы следовали этому учебному курсу, который вы связали, посмотрите на функцию, которая регистрирует кнопки:

 function mylink_button() { if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages'){ return; } if ( get_user_option('rich_editing') == 'true' ) { add_filter( 'mce_external_plugins', 'add_plugin' ); add_filter( 'mce_buttons', 'register_button' ); } } 

и вы немного измените его, чтобы проверить тип сообщения:

 function mylink_button() { if ( ! current_user_can('edit_posts') && ! current_user_can('edit_pages')){ return; } if ( get_user_option('rich_editing') == 'true' ) { global $typenow; if (empty($typenow) && !empty($_GET['post'])) { $post = get_post($_GET['post']); $typenow = $post->post_type; } if ("newpages" == $typenow){ add_filter( 'mce_external_plugins', 'add_plugin' ); add_filter( 'mce_buttons', 'register_button' ); } } } 

таким образом вы регистрируете только кнопки на вашем типе «newpages»

Спасибо, Bainternet. Очень полезно. Я использовал ваше решение с одной небольшой модификацией.

Вместо

 global $typenow; 

я взял

 global $current_screen; $current_screen->post_type; 

$ typenow возвращает правильный тип, если вы вставляете новое сообщение. Когда вы редактируете существующий пост, он всегда возвращает «post». Поэтому лучше использовать $ current_screen-> post_type.