Как отключить редактор страниц в админке WordPress?
Я установил ACF, чтобы натянуть свой SPA на WP.
Теперь мне абсолютно не нужен в админке редактор страниц, который занимает много места:
Можно конечно прописать в стилях:
.editor-styles-wrapper { display: none; } |
.editor-styles-wrapper { display: none; }
Но есть ли какой-то менее радикальный способ?
Дополнительно:
...когда ищем приключения на пятую точку...
Вам дали блочный редактор чтобы вы не костылили с acf, но вы рвёте гланды через анус. Жертвы ютубофф..
Ответы:
Как отключить редактор страниц в админке 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'); } }}
можно также через фильтр add_filter('register_post_type_args',
например отключить show_in_rest, но на счет корректности точно не скажу (не тестировал)...
- Я вот что нашёл:
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шники, кто мешает Вам их добавить?
spoileradd_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); //}..... }}
# Отключаем редактор Гутенберг для страниц и типов записей.
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' ] );
} );
}
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос




Скрывать редактор страниц через CSS можно, но это самый грубый способ. Если страница действительно собирается только через ACF и шаблон темы, правильнее отключить поддержку редактора для нужного типа записи или конкретных страниц через WordPress API.
Для всех страниц:
add_action('init', function () { remove_post_type_support('page', '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'); } });
Так редактор не просто визуально скрывается, а действительно убирается из интерфейса. ACF-поля при этом остаются, и администратор не видит лишний блок.
Но есть важный нюанс: если в проекте нужен REST API и контент страниц, отключение редактора значит, что стандартное поле
post_contentбольше не будет использоваться. Тогда все данные должны быть в ACF, а фронт должен явно читать эти поля. Это нормально для SPA, но архитектуру нужно держать дисциплинированно: ACF JSON, понятные имена полей, шаблоны, валидация и fallback, если поле пустое.