Как удалить редактор WYSIWYG для определенного типа пользовательских записей?
Я не хочу использовать редактор WYSIWYG в верхней части моего произвольного типа записей. Вместо этого я хочу использовать текстовое поле произвольного поля, которое можно разместить внизу списка моих пользовательских полей.
Это возможно?

// Удаление визуального редактора для определенного типа записи
add_action('init', 'init_remove_support',100);
function init_remove_support(){
$post_type = 'your post type'; // Замените на ваш тип записи
remove_post_type_support( $post_type, 'editor'); // Удаляем поддержку редактора
}
добавьте этот код в файл functions.php вашей темы

Примечание: Я рекомендую вызывать remove_post_type_support()
внутри того же обработчика, где вы вызываете register_post_type()
, чтобы обеспечить правильный порядок выполнения.

Я не вижу register_post_type() в functions.php. Я использую Custom Types UI в комбинации с AdvancedCustomFields.

То, что вы используете плагин Custom Post Types UI - довольно важная деталь вашего вопроса. :) Этот плагин предоставляет параметр supports
в своем интерфейсе. Смотрите эти скриншоты.

Вы можете отключить визуальный редактор WYSIWYG, оставив только редактор HTML-кода. Выберите одну из функций ниже:
// отключить wyswyg для произвольного типа записи, используя глобальную переменную $post
add_filter('user_can_richedit', function( $default ){
global $post;
if( $post->post_type === 'product') return false;
return $default;
});
// отключить wyswyg для произвольного типа записи, используя функцию get_post_type()
add_filter('user_can_richedit', function( $default ){
if( get_post_type() === 'product') return false;
return $default;
});

Есть ли способ отключить WYSIWYG только для краткого описания? В моей теме он включен, и я сомневаюсь в их коде, не уверен, что смогу его удалить. Я задал этот вопрос здесь: https://wordpress.stackexchange.com/questions/300877/disable-wysiwyg-rich-text-editor-only-on-post-excerpt

Альтернативно, вы можете управлять поддержкой редактора записей напрямую в вызове register_post_type()
, через параметр 'supports'
в массиве $args
.
Значение по умолчанию: 'supports' => array( 'title', 'editor' )
.
Вы можете изменить его на то, что вам нужно; например: 'supports' => array( 'title' )
.

Относительно этого комментария:
Я использую Custom Types UI в комбинации с AdvancedCustomFields.
Плагин Custom Post Types UI предоставляет доступ ко всем параметрам массива $args
функции register_post_type()
через свой интерфейс.
В данном случае вам просто нужно найти раздел Supports и отключить/снять галочку с опции Editor:

Я постараюсь дать более полный ответ:
Если вы хотите полностью удалить редактор контента
Ответ @Oleg Butuzov хороший:
add_action('init', 'init_remove_support',100);
function init_remove_support(){
$post_type = 'ваш тип записи';
remove_post_type_support( $post_type, 'editor');
}
Если вы хотите только отключить TinyMCE, но оставить HTML-панели инструментов
Ответ @biziclop хороший:
add_filter('user_can_richedit', function( $default ){
global $post;
if( $post->post_type === 'product') return false;
return $default;
});
В этом случае wp-content-editor-tools
уже будет виден, так как expand-editor.js добавляет панели инструментов.
Если вы хотите заменить редактор TinyMCE на простое текстовое поле
Я нашел ответ здесь.
function wpse_199918_wp_editor_settings( $settings, $editor_id ) {
if ( $editor_id === 'content' && get_current_screen()->post_type === 'custom_post_type' ) {
$settings['tinymce'] = false;
$settings['quicktags'] = false;
$settings['media_buttons'] = false;
}
return $settings;
}
add_filter( 'wp_editor_settings', 'wpse_199918_wp_editor_settings', 10, 2 );

Другой, более последовательный способ отключить WYSIWYG редактор, оставив только редактор HTML-кода — запретить использование TinyMCE с помощью фильтра "wp_editor_settings" для вашего пользовательского типа записи.
function my_post_type_editor_settings( $settings ) {
global $post_type;
if ( $post_type == 'my_post_type' ) {
$settings[ 'tinymce' ] = false;
}
return $settings;
}
add_filter( 'wp_editor_settings', 'my_post_type_editor_settings' );
