Как удалить редактор WYSIWYG для определенного типа пользовательских записей?

16 нояб. 2012 г., 18:03:20
Просмотры: 30.9K
Голосов: 23

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

Это возможно?

0
Все ответы на вопрос 6
4
28
// Удаление визуального редактора для определенного типа записи
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 вашей темы

16 нояб. 2012 г. 18:09:49
Комментарии

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

Chip Bennett Chip Bennett
16 нояб. 2012 г. 18:21:20

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

scottgemmell scottgemmell
16 нояб. 2012 г. 18:42:08

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

Chip Bennett Chip Bennett
16 нояб. 2012 г. 18:58:01

Это удаляет оба редактора (код и визуальный), а не только визуальный - вопрос был про удаление WYSIWYG)

gordie gordie
4 февр. 2022 г. 17:46:06
2
22

Вы можете отключить визуальный редактор 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;
});
11 дек. 2014 г. 13:29:46
Комментарии

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

Jason Jason
16 апр. 2018 г. 09:13:01

Привет, честно говоря, я не знаю, мои знания WP немного устарели, извини. Единственное, что я могу предложить — это покопаться в исходном коде WP, найти что-то подходящее, а затем загуглить/поискать в DuckDuckGo документацию/примеры.

biziclop biziclop
17 апр. 2018 г. 09:32:45
1
12

Альтернативно, вы можете управлять поддержкой редактора записей напрямую в вызове register_post_type(), через параметр 'supports' в массиве $args.

Значение по умолчанию: 'supports' => array( 'title', 'editor' ).

Вы можете изменить его на то, что вам нужно; например: 'supports' => array( 'title' ).

16 нояб. 2012 г. 18:20:36
Комментарии

это должен быть принятый ответ, потому что это более рациональный способ сделать это!

rafa226 rafa226
19 авг. 2021 г. 11:53:10
1

Относительно этого комментария:

Я использую Custom Types UI в комбинации с AdvancedCustomFields.

Плагин Custom Post Types UI предоставляет доступ ко всем параметрам массива $args функции register_post_type() через свой интерфейс.

В данном случае вам просто нужно найти раздел Supports и отключить/снять галочку с опции Editor:

Плагин Custom Post Types UI - Настройки регистрации типа записи

16 нояб. 2012 г. 19:01:31
Комментарии

Хотя другой ответ был помечен как выбранный, это правильный ответ. Нет необходимости запускать фильтр для удаления того, что можно просто исключить при объявлении CPT с самого начала.

butlerblog butlerblog
13 авг. 2017 г. 21:56:41
0

Я постараюсь дать более полный ответ:

Если вы хотите полностью удалить редактор контента

Ответ @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 );
3 сент. 2020 г. 22:31:16
1

Другой, более последовательный способ отключить 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' );
11 мая 2017 г. 14:43:24
Комментарии

Пожалуйста, [отредактируйте] ваш ответ и добавьте объяснение: почему это может решить проблему?

fuxia fuxia
11 мая 2017 г. 15:04:32