Как отключить редактор страниц в админке WordPress?

Ссылка скопирована
1 ответ

Я установил ACF, чтобы натянуть свой SPA на WP.
Теперь мне абсолютно не нужен в админке редактор страниц, который занимает много места:

Как отключить редактор страниц в админке Wordpress?

Можно конечно прописать в стилях:

.editor-styles-wrapper {   display: none; }

.editor-styles-wrapper { display: none; }

Но есть ли какой-то менее радикальный способ?

Дополнительно:

...когда ищем приключения на пятую точку...

Вам дали блочный редактор чтобы вы не костылили с acf, но вы рвёте гланды через анус. Жертвы ютубофф..

  • Да ну.. И как же ты натянешь свою вёрстку на WP без ACF или подобного плагина? А ну давай и репитор сделай и много много чего ещё.. Обоснуй, иначе это пустое..
  • Влад, У вордпресса же есть АПИ, он возвращает структуру страницы в JSON, которую можно распарсить на контент
  • NikakNikak, о! это интересно. если не сложно, приведи какую-нибудь адекватную статью на эту тему.
  • Ответы:

    Как отключить редактор страниц в админке Wordpress?

    так же как и подключается

    редактор и не только
    что-то типо этого:

    add_action('current_screen','remove_editor_support'); if(!function_exists('remove_editor_support')){ function remove_editor_support(){     $get_screen=get_current_screen();     $current_screen=$get_screen->post_type;     $post_type='post';     // $post_type='page';     if($current_screen==$post_type){         remove_post_type_support($current_screen,'editor');     } }}

    add_action('current_screen','remove_editor_support'); if(!function_exists('remove_editor_support')){ function remove_editor_support(){ $get_screen=get_current_screen(); $current_screen=$get_screen->post_type; $post_type='post'; // $post_type='page'; if($current_screen==$post_type){ remove_post_type_support($current_screen,'editor'); } }}

    Как отключить редактор страниц в админке Wordpress?

    можно также через фильтр add_filter('register_post_type_args',
    например отключить show_in_rest, но на счет корректности точно не скажу (не тестировал)...

    Как отключить редактор страниц в админке Wordpress?

    • Я вот что нашёл:
      function disable_content_editor() {     if (isset($_GET['post'])) {         $post_ID = $_GET['post'];     } else if (isset($_POST['post_ID'])) {         $post_ID = $_POST['post_ID'];     }      if (!isset($post_ID) || empty($post_ID)) {         return;     }      /*      * Полностью отключить редактор WordPress для страницы с определённым ID (в нашем примере с ID = 15)      */     if ($post_ID == 15) {         remove_post_type_support('page', 'editor');     } 	 	/*      * Отключить возможность редактирования для всех страниц (т.е. для всех постов с типом "страница")      */ 	$post_type = get_post_type($post_ID); 	if ($post_type == 'page') {         return false;     }      /*      * Отключить возможность редактирования для страниц с ID 16, 25 и 30 (для случаев, когда нужно отключить редактор сразу для нескольких страниц)      */     $disabled_IDs = array(16, 25, 30);     if (in_array($post_ID, $disabled_IDs)) {         remove_post_type_support('page', 'editor');     }      /*      * Скрыть редактор ВордПресс на страницах с определённым шаблоном (!!!ВНИМАНИЕ!!! указывать нужно не название шаблона, а имя его файла, например my_page_template.php)      */     $page_template = get_post_meta($post_ID, '_wp_page_template', true);     if ($page_template == 'my_page_template.php') {         remove_post_type_support('page', 'editor');     } }  add_action('admin_init', 'disable_content_editor');

      function disable_content_editor() { if (isset($_GET['post'])) { $post_ID = $_GET['post']; } else if (isset($_POST['post_ID'])) { $post_ID = $_POST['post_ID']; } if (!isset($post_ID) || empty($post_ID)) { return; } /* * Полностью отключить редактор WordPress для страницы с определённым ID (в нашем примере с ID = 15) */ if ($post_ID == 15) { remove_post_type_support('page', 'editor'); } /* * Отключить возможность редактирования для всех страниц (т.е. для всех постов с типом "страница") */ $post_type = get_post_type($post_ID); if ($post_type == 'page') { return false; } /* * Отключить возможность редактирования для страниц с ID 16, 25 и 30 (для случаев, когда нужно отключить редактор сразу для нескольких страниц) */ $disabled_IDs = array(16, 25, 30); if (in_array($post_ID, $disabled_IDs)) { remove_post_type_support('page', 'editor'); } /* * Скрыть редактор ВордПресс на страницах с определённым шаблоном (!!!ВНИМАНИЕ!!! указывать нужно не название шаблона, а имя его файла, например my_page_template.php) */ $page_template = get_post_meta($post_ID, '_wp_page_template', true); if ($page_template == 'my_page_template.php') { remove_post_type_support('page', 'editor'); } } add_action('admin_init', 'disable_content_editor');

    • Влад, встречал этот код и не один раз. а разница!? Разница в том, что событие current_screen для таких целей и существует (вы читали что все эти события делают и для чего созданы были?)

      Если речь об идентификаторах, дак вопрос стоял иначе. А нужны IDшники, кто мешает Вам их добавить?
      spoiler

      add_action('current_screen','remove_editor_support'); if(!function_exists('remove_editor_support')){ function remove_editor_support(){     //if($current_screen==$post_type){..... 		$post = get_posts(); 		$post_ID = !empty($post) ? $post[0]->ID : ( !empty( $_GET['post'] )? $_GET['post'] : ( !empty( $_POST['post_ID'] )? $_POST['post_ID'] : false ) ); 		if ( empty($post_ID) ) {         return;     } 		 		var_dump($post_ID); 		     //}..... }}

      add_action('current_screen','remove_editor_support'); if(!function_exists('remove_editor_support')){ function remove_editor_support(){ //if($current_screen==$post_type){..... $post = get_posts(); $post_ID = !empty($post) ? $post[0]->ID : ( !empty( $_GET['post'] )? $_GET['post'] : ( !empty( $_POST['post_ID'] )? $_POST['post_ID'] : false ) ); if ( empty($post_ID) ) { return; } var_dump($post_ID); //}..... }}

    Как отключить редактор страниц в админке Wordpress?

    # Отключаем редактор Гутенберг для страниц и типов записей.

    add_filter( 'use_block_editor_for_post_type', '__return_false' );

    add_filter( 'use_block_editor_for_post_type', '__return_false' );

    # Отключаем стили Гутенберг для шапки страниц.

    function remove_wp_block_library_css(){ 	wp_dequeue_style( 'wp-block-library' ); 	wp_dequeue_style( 'wp-block-library-theme' ); 	wp_dequeue_style( 'wc-block-style' ); 	wp_dequeue_style( 'global-styles' ); } add_action( 'wp_enqueue_scripts', 'remove_wp_block_library_css', 100 );

    function remove_wp_block_library_css(){ wp_dequeue_style( 'wp-block-library' ); wp_dequeue_style( 'wp-block-library-theme' ); wp_dequeue_style( 'wc-block-style' ); wp_dequeue_style( 'global-styles' ); } add_action( 'wp_enqueue_scripts', 'remove_wp_block_library_css', 100 );

    если редактор занимает много местаи вообще ни к чему то можете вернуть редактор к тарой версии, т.е. отключить этот долбаный гуттенберг. Такое всё запутааное, стая версия прочтая и понятная. Я всегда ставлю старую версию. В function.php в низ вставьте

    if( 'disable_gutenberg' ){
    remove_theme_support( 'core-block-patterns' );
    add_filter( 'use_block_editor_for_post_type', '__return_false', 100 );
    remove_action( 'wp_enqueue_scripts', 'wp_common_block_scripts_and_styles' );
    add_action( 'admin_init', function(){
    remove_action( 'admin_notices', [ 'WP_Privacy_Policy_Content', 'notice' ] );
    add_action( 'edit_form_after_title', [ 'WP_Privacy_Policy_Content', 'notice' ] );
    } );
    }

    Нужно решить такую задачу?

    Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

    Заказать помощь
    Лучший ответ
    1
    Виктор Sys Ответ

    Скрывать редактор страниц через CSS можно, но это самый грубый способ. Если страница действительно собирается только через ACF и шаблон темы, правильнее отключить поддержку редактора для нужного типа записи или конкретных страниц через WordPress API.

    Для всех страниц:

    add_action('init', function () {
        remove_post_type_support('page', 'editor');
    });

    add_action('init', function () { remove_post_type_support('page', 'editor'); });

    Для записей:

    add_action('init', function () {
        remove_post_type_support('post', 'editor');
    });

    add_action('init', function () { remove_post_type_support('post', 'editor'); });

    Если нужно скрыть редактор только у отдельных шаблонов страниц, можно сделать проверку в админке:

    add_action('admin_init', function () {
        $post_id = isset($_GET['post']) ? (int) $_GET['post'] : 0;
        if (!$post_id) {
            return;
        }
     
        $template = get_page_template_slug($post_id);
        if ($template === 'templates/spa-page.php') {
            remove_post_type_support('page', 'editor');
        }
    });

    add_action('admin_init', function () { $post_id = isset($_GET['post']) ? (int) $_GET['post'] : 0; if (!$post_id) { return; } $template = get_page_template_slug($post_id); if ($template === 'templates/spa-page.php') { remove_post_type_support('page', 'editor'); } });

    Так редактор не просто визуально скрывается, а действительно убирается из интерфейса. ACF-поля при этом остаются, и администратор не видит лишний блок.

    Но есть важный нюанс: если в проекте нужен REST API и контент страниц, отключение редактора значит, что стандартное поле post_content больше не будет использоваться. Тогда все данные должны быть в ACF, а фронт должен явно читать эти поля. Это нормально для SPA, но архитектуру нужно держать дисциплинированно: ACF JSON, понятные имена полей, шаблоны, валидация и fallback, если поле пустое.

    Другие ответы (0)

    Пока нет других ответов. Будьте первым, кто поможет автору.

    Ответить на вопрос

    комментарий

    Ваш адрес email не будет опубликован. Обязательные поля помечены *

    Вам также может быть интересно