Si vous avez déjà clique sur Cтатьи В wp-admin всё зависает со странной ошибкой типа «v3.1.1 не удаётся открыть wp-admin 'articles'…». Вероятно, у вас конфликт между плагином (версия 3.1.1), фрагментом кода и страницей списка записей.edit.php).
проблема
Точное сообщение может различаться в зависимости от плагина, сервера и языка, но трассировка часто начинается так (в белый экран(500 страниц или PHP-лог):
v3.1.1 fails to open wp-admin "articles" with a fatal error:
Uncaught TypeError: ... in /wp-content/plugins/mon-plugin/...
or
PHP Fatal error: Uncaught Error: Call to undefined function ...
or
There has been a critical error on this website.
Где это появляется:
- Только для администраторов : путем открытия Статьи> Все статьи (Типичный URL:)
/wp-admin/edit.php), иногда также добавлять (URL:/wp-admin/post-new.php). - Иногда в AJAX : L 'экран При загрузке страницы происходит действие (фильтрация, поиск, быстрое редактирование), которое вызывает ошибку.
- Реже в REST API Если плагин изменяет POST-запрос через REST, это также может повлиять на работу Gutenberg.
Типичные ситуации, с которыми я сталкивался при устранении неполадок:
- Сразу после обновления плагина v3.1.1 (Число «3.1.1» почти всегда обозначает плагин, а не...) WordPress).
- После добавления фрагмента кода «для переименования записей в статьи», найденного в старом руководстве.
- После активации плагина SEO/перенаправления/безопасности, влияющего на функциональность или меню администратора.
- На сайтах, использующих Divi 5, Elementor или Avada: эти конструкторы не ломаются напрямую.
edit.phpОднако они часто сосуществуют с «фрагментами кода» и плагинами, которые нарушают их работу.
Для кого предназначено это руководство? Если вы новичок, вы сможете определить... Какой кирпич разобьёт экран? СтатьиВосстановите доступ к панели администратора и примените исправление к WordPress. 6.9.4 (Апрель 2026 г.) и PHP 8.1+.
Краткое резюме
- Меню Cтатьи указывает на
/wp-admin/edit.phpЕсли эта страница зависает, то почти всегда это происходит из-за... хук администратора (действие/фильтр) плагина или фрагмента кода. - Начните с активации WP_DEBUG_LOG и / или Проверка работоспособности чтобы выявить неисправный плагин, не нарушая работу общедоступного сайта.
- Типичный случай: неправильно указан код CPT «статьи» (
register_post_type()) с некоторыми непоследовательные возможности или слизняк что приводит к конфликту. - После исправления: повторно сохранить постоянные ссылки и очистите кэш (плагина/сервера/браузера).
- Если вы больше не можете получить доступ к wp-admin: деактивируйте плагин через FTP (переименуйте папку) или WP-CLI.
Симптомы
Вот что вы можете заметить, от наиболее часто встречающихся до наиболее вводящих в заблуждение утверждений:
- Экран белила нажав CтатьиИногда с пометкой «Критическая ошибка».
- ERREUR 500 только на
/wp-admin/edit.php(Остальные страницы административной панели работают). - «Извините, у вас нет разрешения на доступ к этой странице». пока вы являетесь администратором.
- Пустой список статей (0 результатов), но статьи существуют.
- Неработающие фильтры/поиск (Страница загружается, а затем зависает во время сортировки по автору/категории).
- Быстрое редактирование (Быстрое редактирование) которое больше не открывается или работает бесконечно (часто это проблема с AJAX).
- Консоль браузера (F12): Ошибки JavaScript на
edit.php(часто связано со скриптом, внедряемым плагином).
Признаки конфликта плагина/темы:
- Проблема исчезает, если отключить плагин, который был недавно обновлен.
- Проблема возникает только для определенных ролей (редактор, автор): подозрения по поводу возможности.
- Проблема возникает после вставки «фрагмента» в
functions.php(дочерняя тема) или плагин для создания фрагментов кода.
Быстрая диагностика: если /wp-admin/edit.php?post_type=page (Страницы) работают, но /wp-admin/edit.php (Сообщения) прерывания, мы часто имеем дело с кодом, который специально нацелен на post или меню «Статьи».
Почему это происходит
Версия для начинающих: экран Cтатьи Это стандартная страница административной панели. Многие плагины «улучшают» эту страницу (столбцы, фильтры, сортировка, ограничения ролей, статистика). Если плагин (или фрагмент кода) выдает ошибку PHP/JS, именно эта страница приводит к сбою.
Вот что происходит за кулисами: WordPress загружается wp-admin/edit.phpформирует запрос в виде списка (WP_Query), затем выполняет ряд крючкиКрючок — это точка удлинения. действие выполняет код в заданный момент времени. фильтры Изменяет значение (например, запрос, столбцы, HTML). Если фильтр возвращает некорректный тип (например, null (вместо массива) PHP 8.1+ менее лоялен и может вызвать ошибку. TypeError.
Вероятные причины (от наиболее частых до самых редких):
- В версии плагина 3.1.1 есть ошибки. Это приводит к добавлению столбцов/фильтров в список записей и вызывает критическую ошибку.
- Старый фрагмент (до PHP 8 / до современного WordPress), который использует неподходящий хук или выгруженную функцию.
- CPT «статьи» зарегистрирован с идентификатором/возможностями, которые конфликтуют с «post» (собственные статьи) и нарушают права доступа.
- конфликт REST/перезаписи После миграции: постоянные ссылки не были восстановлены, правила перезаписи устарели.
- Агрессивный кэш (Кэширование административной панели крайне редко, но возможно из-за неправильно настроенного обратного прокси-сервера) или минификации JavaScript, которая нарушает работу административного интерфейса.
- Проблема с сервером Причинами могут быть: недостаточно памяти PHP, поврежденный OPcache, проблемы с правами доступа к файлам или версия PHP < 8.1.
Обратите внимание на версию «v3.1.1»: в WordPress 6.9.4 версии «v3.1.1» нет. Если вы видите «v3.1.1», это почти всегда версия плагина (или темы). Диагностика включает в себя определение того, какая именно это версия.
Предварительные условия перед началом обучения
- охрана : база данных + файлы. Не проводите тестирование "случайным образом" в рабочей среде.
- Тестовая среда Если возможно (на тестовом сервере). Я часто видел, как простое отсутствие точки с запятой блокирует весь административный интерфейс.
- Версии WordPress 6.9.4 и PHP 8.1+ (в идеале 8.2/8.3, если ваш хостинг-провайдер это позволяет). Проверьте наличие. Инструменты > Здоровье сайта.
- Outils :
- Монитор запросов (см. ошибки, запросы, хуки).
- Проверка работоспособности и устранение неполадок (Режим устранения неполадок, не затрагивающий посетителей).
- Доступ к журналам сервера (или хотя бы
wp-content/debug.log).
Включить ведение журналов WordPress (в wp-config.php(выше «прекратить редактирование»):
define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false ); // Affichez false en prod pour éviter de divulguer des infos
Официальная справочная информация: Отладка в WordPress.
Риск безопасности В рабочей среде никогда не отображайте ошибки PHP на экране. Трассировка стека может раскрыть пути, версии и иногда секреты.
Решение 1: Исправить тип записи CPT "articles" (slug/capabilities), который приводит к сбою в работе административной панели.
Это происходит, когда кто-то хочет «создать тип контента «Статьи»», хотя WordPress уже называет стандартные записи «Статьями» (postРезультат: запутанные метки, дублированные меню, а иногда и экран «У вас нет авторизации…» или сбой страницы, если плагин ожидает… post но получает другой post_type.
концепции :
- КПП = Пользовательский тип записи (пользовательский тип контента), объявленный через
register_post_type(). - Слизняк = идентификатор URL (например,
article), используется в постоянных ссылках, а иногда и в административной панели. - Обработка и услуги = разрешения (например,
edit_posts,edit_pagesЕсли они неправильно сопоставлены, администратор запрещает доступ.
Когда следует заподозрить эту причину
- В меню «Статьи» не открывается обычный список публикаций.
- Вы видите URL-адрес следующего типа.
/wp-admin/edit.php?post_type=articles. - Проблема возникла после добавления фрагмента кода “register_post_type('articles', …)”.
Где исправить
Подходящее место: небольшой пользовательский плагин (рекомендуется) или мю-плагин (Требуется плагин), если вы хотите быть уверены, что он загрузится даже при смене темы.
- Не вставляйте это в плагин для создания фрагментов кода. Если вы находитесь в режиме устранения неполадок: если плагин фрагментов кода перестанет работать, вы потеряете доступ.
- Если нужно сделать это быстро: детская тематика
functions.phpно он более хрупкий.
ДО кода (не работает)
Реалистичный пример, с которым я часто сталкиваюсь (артикли в идентификаторах, несогласованные возможности и конфликт меток):
<?php
// functions.php (thème enfant) - EXEMPLE CASSÉ
add_action( 'init', function() {
register_post_type( 'articles', [
'label' => 'Articles',
'public' => true,
'show_in_menu' => true,
'show_in_rest' => true,
'rewrite' => [ 'slug' => 'articles' ],
// Problème : capabilities bricolées, et parfois l’auteur n’a plus accès à edit.php
'capability_type' => 'page',
'map_meta_cap' => false,
] );
} );
Почему это ломается: с capability_type => 'page' et map_meta_cap => falseВы создаёте тип, который ведёт себя как страницы с точки зрения разрешений, но без надлежащего сопоставления. В зависимости от ролей и плагинов безопасности доступ к списку может быть запрещён или вызывать ошибки при расчёте ограничений WordPress.
Код ПОСЛЕ (исправлен)
Цель: избежать конфликтов со статьями (обычными публикациями) и обеспечить единообразие прав доступа. Я рекомендую:
- Однозначный идентификатор и обозначение (например,
mag_articleouressource). - Явные обозначения (например, «Ресурсы»).
- Возможности корректно сопоставлены посредством
map_meta_cap => true.
<?php
/**
* Plugin: Mon CPT Ressources (corrigé)
* Emplacement : /wp-content/mu-plugins/cpt-ressources.php
* (Créez le dossier mu-plugins s'il n'existe pas)
*/
add_action( 'init', function() {
$labels = [
'name' => 'Ressources',
'singular_name' => 'Ressource',
'add_new' => 'Ajouter',
'add_new_item' => 'Ajouter une ressource',
'edit_item' => 'Modifier la ressource',
'new_item' => 'Nouvelle ressource',
'view_item' => 'Voir la ressource',
'search_items' => 'Rechercher des ressources',
'not_found' => 'Aucune ressource trouvée',
'not_found_in_trash' => 'Aucune ressource dans la corbeille',
'all_items' => 'Toutes les ressources',
'menu_name' => 'Ressources',
];
register_post_type( 'ressource', [
'labels' => $labels,
'public' => true,
'show_in_menu' => true,
'show_in_rest' => true, // Compatible Gutenberg + REST
'menu_position' => 21,
'menu_icon' => 'dashicons-media-document',
'supports' => [ 'title', 'editor', 'thumbnail', 'excerpt', 'author' ],
'has_archive' => true,
'rewrite' => [ 'slug' => 'ressources', 'with_front' => false ],
'capability_type' => 'post',
'map_meta_cap' => true, // Important : mapping correct des permissions
] );
}, 10 );
Почему это исправляет
- Вы избегаете интеллектуального и технического конфликта, связанного со статьями (встроенными публикациями).
- WordPress умеет рассчитывать права доступа «как у записи» (стандартный подход), что значительно снижает конфликты с плагинами ролей/безопасности.
- Тип записи CPT совместим с REST/Gutenberg.
show_in_rest), что позволяет избежать странного поведения в редакторе.
Важный шаг после этой коррекции.
идти Настройки> Постоянные ссылки и нажмите Регистрация (без каких-либо изменений). Это заставляет WordPress заново генерировать правила перезаписи.
Официальный документ: регистр_тип_поста().
Решение 2: Восстановление правил перезаписи, REST-запросов и постоянных ссылок после обновления.
Такая ситуация часто возникает после:
- Перенос сайта (изменение URL-адреса),
- Активация/деактивация плагина, создающего пользовательские типы записей/таксономии.
- Обновите версию «v3.1.1» плагина, который изменяет свои идентификаторы (slugs).
- Восстановление частичной резервной копии.
Это не всегда приводит к фатальной ошибке PHP. Иногда открывается экран «Статьи», но определенные фильтры или действия отправляют запросы, которые завершаются неудачей (REST/AJAX), и интерфейс отображается «неисправным».
Быстрая диагностика (код не требуется)
- тест
/wp-admin/edit.phpзатем/wp-admin/edit.php?post_status=trash. - Откройте консоль браузера (F12) и перейдите на вкладку «Сеть»: вызовы к
/wp-json/в 404/401/500? - идти Инструменты > Здоровье сайта и проверьте рекомендации (REST API, циклы и т. д.).
Исправление 1: Чистая очистка постоянных ссылок (интерфейс пользователя)
Самый безопасный вариант: Настройки> Постоянные ссылки > Регистрация.
Исправление 2: Выполните очистку через WP-CLI (если административный интерфейс нестабилен).
Если у вас установлен WP-CLI (часто на VPS/управляемом хостинге), выполните следующую команду:
wp rewrite flush --hard
Справочник WP-CLI: wp rewrite flush.
ДО кода (ошибка): сброс в неправильном месте
Я видел, как этот фрагмент кода вызывал замедление работы, тайм-ауты и даже нестабильное поведение в режиме администратора:
<?php
// EXEMPLE CASSÉ : flush à chaque chargement
add_action( 'init', function() {
flush_rewrite_rules(); // Très mauvais : lourd, et peut provoquer des effets de bord
} );
AFTER код (исправлено): сброс происходит только при активации
Разместите этот код в пользовательские плагины (бывший : /wp-content/plugins/mon-fix/mon-fix.phpЗатем активируйте его. После этого вы можете сохранить его (без окончательной очистки) или удалить.
<?php
/**
* Plugin Name: Fix Permaliens (flush à l'activation)
* Description: Force une régénération des règles de réécriture à l'activation uniquement.
*/
register_activation_hook( __FILE__, function() {
// On régénère proprement les règles une seule fois
flush_rewrite_rules();
} );
register_deactivation_hook( __FILE__, function() {
// Optionnel : on flush à la désactivation si le plugin ajoutait des règles
flush_rewrite_rules();
} );
Почему это исправляет
- Вы устраняете антипаттерн:
flush_rewrite_rules()Не следует переворачивать каждую страницу. - После изменения типа записи (CPT) или URL-адреса (slug) вы сбрасываете правила, что стабилизирует работу некоторых административных экранов и связанных с ними REST/AJAX-конечных точек.
Официальный документ: flush_rewrite_rules().
Решение 3: Выявление критической ошибки PHP на экране «Статьи» (хуки администрирования, столбцы, фильтры).
Это наиболее распространенная причина ошибки «v3.1.1 не удается открыть статьи wp-admin…». Плагин (v3.1.1) или фрагмент кода добавляет столбец, изменяет запрос или фильтрует строки, что приводит к ошибке PHP (TypeError, undefined function и т. д.).
Шаг 1: Найдите точную ошибку.
открытый wp-content/debug.log после воспроизведения ошибки (нажмите на CтатьиНайдите строку с путем "PHP Fatal error", например, такую:
PHP Fatal error: Uncaught TypeError: array_merge(): Argument #2 must be of type array, null given
in /wp-content/plugins/mon-plugin/includes/admin-columns.php:123
Stack trace:
#0 ...
Если у вас нет лога, установите Query Monitor и посмотрите вкладку "PHP Errors" (если страница загружается лишь частично). Документация Query Monitor: WordPress.org.
Шаг 2: Изолируйте доступ к общедоступному сайту, не нарушая его работу (проверка состояния здоровья).
С Проверка работоспособности и устранение неполадок :
- Активируйте режим устранения неполадок (только для вашей сессии).
- тест CтатьиЕсли это сработает: проблема связана с плагином/темой, которая была деактивирована в режиме устранения неполадок.
- Включайте плагины по одному, пока не воспроизведете ошибку.
По моему опыту, это самый быстрый способ определить «плагин версии 3.1.1», не делая сайт недоступным.
Типичный случай: фильтр столбца, возвращающий неверный тип данных.
Юг edit.phpМногие коды используют этот фильтр. manage_posts_columns (или manage_edit-post_columns) для добавления столбцов. Классическая ошибка в PHP 8+: возвращает null вместо картины.
ДО кода (не работает)
Реалистичный пример: плагин/фрагмент кода хочет удалить столбец, но забывает вернуть массив:
<?php
// EXEMPLE CASSÉ : filtre qui ne retourne rien (donc null)
add_filter( 'manage_posts_columns', function( $columns ) {
unset( $columns['comments'] );
// Oubli : return $columns;
}, 10, 1 );
Возможный результат: в дальнейшем WordPress (или другой плагин) выполнит array_merge() из $columns и получает null → Ошибка типа → Экран "Товары не в наличии".
Код ПОСЛЕ (исправлен)
Вставьте это исправление в пользовательский плагин (или functions.php (детской тематики) после сохраненияЕсли вы подозреваете проблему с плагином, исправьте её в своём коде и отключите проблемный плагин.
<?php
/**
* Correctif : toujours retourner un tableau de colonnes.
* Emplacement : functions.php (thème enfant) OU plugin custom.
*/
add_filter( 'manage_posts_columns', function( $columns ) {
if ( ! is_array( $columns ) ) {
// Sécurité : évite les TypeError si un autre code a renvoyé n'importe quoi
$columns = [];
}
unset( $columns['comments'] );
return $columns;
}, 10, 1 );
Почему это исправляет
- Фильтр должен Возвращает значение. В противном случае WordPress получает...
null. - Защитная мера
is_array()обеспечивает защиту даже в том случае, если другой плагин возвращает некорректный тип.
Официальная документация по хукам (действиям/фильтрам): API плагинов: Хуки.
Типичный случай: хук "предварительного запроса", который нарушает работу списка (pre_get_posts).
Ещё одна распространённая ошибка: вы хотите отфильтровать записи в панели администратора и изменяете все запросы, включая те, что находятся в списке администратора. Страница «Статьи» становится пустой, тормозит или вылетает, если запрос становится недействительным.
ДО кода (не работает)
<?php
// EXEMPLE CASSÉ : modifie toutes les requêtes, y compris l'admin
add_action( 'pre_get_posts', function( $query ) {
// Mauvais : pas de garde-fous, touche REST, admin, widgets, etc.
$query->set( 'posts_per_page', 500 );
$query->set( 'post_status', 'publish' );
} );
Код ПОСЛЕ (исправлен)
Цель: изменить только основной запрос на стороне клиента, а не панель администратора. Разместить его в пользовательском плагине или дочерней теме.
<?php
/**
* Correctif : limiter l'impact de pre_get_posts.
* Emplacement : functions.php (thème enfant) OU plugin custom.
*/
add_action( 'pre_get_posts', function( $query ) {
// Toujours vérifier qu'on ne casse pas l'admin
if ( is_admin() ) {
return;
}
// Ne modifier que la requête principale
if ( ! $query->is_main_query() ) {
return;
}
$query->set( 'posts_per_page', 12 );
}, 10, 1 );
Официальный документ: pre_get_posts.
Типичный случай: JavaScript-скрипт, внедренный в панель администратора, который нарушает работу файла edit.php.
Если в консоли отображаются ошибки JavaScript, поищите плагин, который добавляет скрипт в очередь выполнения в административной панели, иногда в минифицированном виде, иногда в зависимости от отсутствующей библиотеки.
ДО кода (не работает)
<?php
// EXEMPLE CASSÉ : charge un script admin partout, sans dépendances ni ciblage
add_action( 'admin_enqueue_scripts', function() {
wp_enqueue_script(
'mon-admin',
plugin_dir_url( __FILE__ ) . 'admin.js',
[],
'3.1.1',
true
);
} );
Код ПОСЛЕ (исправлен)
Мы ориентируемся только на экран «Статьи» (публикации) и указываем разумные зависимости.
<?php
/**
* Correctif : charger le JS uniquement sur l'écran des articles.
* Emplacement : plugin custom (recommandé).
*/
add_action( 'admin_enqueue_scripts', function( $hook_suffix ) {
// L'écran liste des posts natifs est généralement edit.php
if ( 'edit.php' !== $hook_suffix ) {
return;
}
// Optionnel : s'assurer qu'on est bien sur post (et pas un CPT)
$post_type = isset( $_GET['post_type'] ) ? sanitize_key( $_GET['post_type'] ) : 'post';
if ( 'post' !== $post_type ) {
return;
}
wp_enqueue_script(
'mon-admin',
plugin_dir_url( __FILE__ ) . 'admin.js',
[ 'jquery' ], // Exemple : dépendance explicite si votre script utilise jQuery
'3.1.2', // Bump de version pour casser le cache navigateur
true
);
}, 10, 1 );
Официальный документ: admin_enqueue_scripts et wp_enqueue_script ().
Проверки после внесения исправлений
- Перезарядка
/wp-admin/edit.phpв режиме приватного просмотра (позволяет избежать агрессивного кэширования). - Попробуйте:
- Поиск статьи
- Фильтровать по категории
- Быстрое редактирование
- Корзина
- Проверить
wp-content/debug.log: больше никаких «Фатальных ошибок» при нажатии. - Если у вас установлен плагин кэширования: очистите кэш плагина, кэш сервера (если применимо) и кэш браузера.
Если ошибка связана с конфликтом прав доступа/возможностей: протестируйте с учетной записью «Редактор» (а не просто администратор). Многие сайты «кажутся» исправленными для администраторов, но остаются неработоспособными для пользователей с более низкими ролями.
Если это всё ещё не поможет
Процедура устранения неполадок, которую я применяю, когда экран «Статьи» остается недоступным.
1) Отключите неисправный плагин без wp-admin (через FTP).
- Подключение через FTP/SFTP.
- идти
/wp-content/plugins/. - Переименуйте папку подозрительного плагина (например,
mon-plugin→mon-plugin.off). - Обновите wp-admin.
Если вы не знаете, какой именно: временно переименуйте его. plugins en plugins.off (отключает все плагины), затем включает и активирует их по одному.
2) Проверьте память PHP
Большой список статей (много столбцов, запросов, статистики) может привести к резкому увеличению использования памяти. Обратите внимание на ошибку «Допустимый размер памяти…».
Вы можете увеличить лимит WordPress (если ваш хостинг-провайдер это позволяет):
<?php
// wp-config.php
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' ); // Pour l'admin
ссылка: wp-config.php (константы).
3) Проверьте версию PHP
Если вы используете PHP 7.4/8.0, некоторые новые плагины (или WordPress 6.9.4) могут работать иначе. Рекомендуется использовать PHP не ниже версии 8.1.
Док: Поддерживаемые версии PHP.
4) Проверьте наличие ошибок REST/AJAX.
- открытый
/wp-json/Ответ должен быть в формате JSON (а не HTML 404). - Проверьте, не блокирует ли это какой-либо плагин безопасности.
/wp-json/ouadmin-ajax.php.
Документация REST: Руководство по REST API WordPress.
5) Монитор запросов: выявление неработающего хука/фильтра.
Если страница загружается лишь частично, Query Monitor может показать вам следующее:
- Ошибки PHP
- медленные запросы
- ошибка скриптов/стилей
- активированные хуки
6) В крайнем случае: активируйте режим восстановления.
В WordPress есть механизм «режима восстановления», который активируется, когда плагин вызывает критическую ошибку в панели администратора. Если вы получили электронное письмо с сообщением «На вашем сайте произошла техническая ошибка», воспользуйтесь ссылкой для восстановления, чтобы отключить проблемный плагин.
Док: Режим восстановления (поддержка).
Распространенные ошибки и ловушки
Диагностическая таблица
| симптом | Причина вероятна | проверка | Решение |
|---|---|---|---|
| Критическая ошибка только в разделе «Статьи». | В плагин версии 3.1.1 добавлены столбцы/фильтры и растения. | В файле debug.log указан путь в /plugins/... | Отключите/откатите плагин, исправьте хук (Решение 3) |
| «Извините, у вас нет разрешения…» | Неправильно сопоставлены возможности CPT или плагин роли. | Протестируйте с правами администратора и редактора, проверьте тип записи (CPT). | Исправить CPT/caps (Решение 1), плагин проверки ролей |
| Пустой список (0 элементов), но они существуют. | pre_get_posts изменяет запрос администратора. | Отключить фрагмент кода, проверить код pre_get_posts | Добавить средства защиты для запросов is_admin/is_main_query (Решение 3) |
| Функция «Быстрое редактирование» не открывается. | Ошибка блокировки JS admin или admin-ajax | Вкладка «Сеть» в консоли: F12 | Нацелиться на очередь, отключить минификацию, разрешить AJAX |
| Проблема после миграции | Переписать устаревшие правила | Настройки > Постоянные ссылки, проверьте /wp-json/ | Очистить постоянные ссылки (Решение 2) |
Ошибки, которые я вижу постоянно.
- Копирование кода не в то место. Вставка фрагмента PHP-кода в поле "CSS" в конструкторе страниц или в редакторе страниц приводит к тому, что ничего не работает, или код отображается в виде обычного текста.
- Забыли поставить точку с запятой в
functions.phpПростая ошибка блокирует весь доступ к wp-admin. Необходимо работать в тестовой среде и поддерживать доступ по FTP. - Использование неподходящего зацепа Например, измените запрос администратора через
pre_get_postsбезis_admin(). - Путаница между акциями и фильтрами. Фильтр должен что-то возвращать. Действие этого не требует. В данном случае ошибка возврата может привести к сбою работы «Статьй».
- Кэш не очищен Вы исправили ошибку, но браузер отображает старую версию JavaScript. Увеличьте версию скрипта и очистите кэш.
- Тестирование в производственной среде без резервного копирования. : в панели администратора это может вас заблокировать.
- Сниппет не работает из-за плагина для сниппетов. Если плагин snippets перестанет работать, его будет сложнее отключить. Для исправления ошибок предпочтительнее использовать mu-плагин.
- Код из старого урока Несовместимо с PHP 8.1 и выше (ошибки TypeError, необязательные параметры и т. д.).
Вариант / альтернатива
Метод без использования кода: откат к версии «v3.1.1»
Если вы определили, что «v3.1.1» — это версия плагина, и ошибка появилась сразу после этого:
- Проверьте страницу плагина на WordPress.org, чтобы узнать, есть ли там соответствующий раздел. Расширенный просмотр разрешает загрузку предыдущей версии.
- Или воспользуйтесь плагином для отката (например, WP Rollback). с осторожностью и только из надежного источника.
Далее, создайте заявку в службу поддержки для плагина, используя следующую команду:
- ваша версия WordPress (6.9.4), PHP,
- полный журнал ошибок,
- Шаги для воспроизведения.
Расширенный метод: «бамперы» mu-plugin для предотвращения критических ошибок в файле edit.php.
Когда необходимо срочно стабилизировать работу административной панели, можно нейтрализовать известный хук (например, фильтр столбцов), заменив его защитным кодом. Предупреждение: это обходное решение. После этого необходимо устранить основную проблему.
Пример: вы определили фильтр, который иногда возвращает nullВы не можете изменить плагин (или не хотите трогать его код). Вы добавляете фильтр на поздней стадии, который "исправляет":
<?php
/**
* Emplacement : /wp-content/mu-plugins/admin-edit-php-safety.php
* Objectif : sécuriser le tableau des colonnes si un plugin renvoie un type invalide.
*/
add_filter( 'manage_posts_columns', function( $columns ) {
// Si un plugin a renvoyé null, on rétablit un tableau minimal
if ( ! is_array( $columns ) ) {
$columns = [
'cb' => '<input type="checkbox" />',
'title' => 'Titre',
'date' => 'Date',
];
}
return $columns;
}, 9999, 1 );
Это не "исправит" плагин, но может снова предоставить вам доступ к экрану для продолжения диагностики.
Избегайте этой проблемы в будущем.
- Не следует называть CPT «статьями». Используйте категорию «Статьи» только для стандартных публикаций. Называйте свои пользовательские типы записей в соответствии с их ролью в бизнесе (ресурсы, проекты, рецепты…).
- Без постоянного смыва :
flush_rewrite_rules()Только при активации/деактивации. - Защитный код для фильтров : проверить типы (
is_array,is_string) при фильтрации значений, используемых другими плагинами. - Систематическая стадирование До крупных обновлений плагина в версии 3.1.1 может быть обнаружена ошибка на одном из экранов административной панели.
- Отслеживайте наличие ошибок. держать
WP_DEBUG_LOGЛегко активируемая и настраиваемая ротация логов на стороне сервера. - Плагины и конструкторы Divi 5, Elementor и Avada не препятствуют исправлению этих ошибок. Однако следует избегать «универсальных» плагинов для повышения производительности, которые также минимизируют функциональность административной панели: это классический источник ошибок JavaScript.
edit.php.
Если вы занимаетесь разработкой: документируйте свои хуки. Фильтр, который ничего не возвращает, — это бомба замедленного действия, особенно в PHP 8.1 и выше.
Ресурсы
- Отладка в WordPress (WP_DEBUG, логи)
- API плагина: Хуки (действия и фильтры)
- register_post_type() (CPT)
- Hook pre_get_posts (изменение запроса)
- flush_rewrite_rules() (перезаписи)
- Проверка работоспособности и устранение неполадок (режим устранения неполадок)
- Монитор запросов (профилирование и ошибки)
- Ядро WordPress на GitHub (справочник кода)
- Система отслеживания ошибок ядра WordPress (тикеты и регрессии)
- Поддерживаемые версии PHP
Часто задаваемые вопросы
Как узнать, какой плагин соответствует версии «v3.1.1»?
посмотреть wp-content/debug.log Путь к неисправному файлу почти всегда указывает на /wp-content/plugins/nom-du-plugin/В качестве альтернативы, используйте функцию проверки работоспособности, активируя плагины по одному.
У меня нет доступа к wp-admin, что мне делать?
Переименуйте папку подозрительного плагина через FTP/SFTP (или отключите все плагины, переименовав их). /wp-content/pluginsЗатем переподключитесь и постепенно активируйте устройство.
Может ли Divi 5 / Elementor / Avada быть причиной этой ошибки?
Они редко провоцируют это напрямую. edit.phpОднако, дополнение, плагин для создания фрагментов кода или оптимизация (минификация), установленные «вместе с конструктором», могут нарушить работу административного интерфейса. Диагноз остается тем же: анализ логов + изоляция плагинов.
Почему ошибка появляется только в разделе «Статьи», а не в других местах?
Поскольку многие плагины используют специфические хуки, связанные со списком записей (столбцы, сортировка, фильтры, ограничения), ошибка в этом коде возникает только при... wp-admin/edit.php.
Можно ли это исправить, изменив неисправный плагин?
Избегайте этого. Любое обновление перезапишет ваши изменения. Вместо этого попробуйте: (1) исправить ошибку в пользовательском плагине/mu-плагине, (2) сообщить об ошибке разработчику, (3) переключиться на другой плагин, если поддержка недоступна.
Я исправил код, но ничего не изменилось.
Очистите кэш (плагина, сервера, браузера). Если это JavaScript административного уровня, увеличьте номер версии в... wp_enqueue_script()Также убедитесь, что вы внесли изменения в правильный файл (дочернюю тему или родительскую тему).
«Извините, у вас нет доступа…», хотя я являюсь администратором.
Это происходит, если плагин ролей/безопасности изменил возможности, или если у CPT (классифицированного типа записей) несогласованные возможности. Временно отключите плагин ролей, а затем исправьте объявление CPT (Решение 1).
Список статей пуст, но на сайте по-прежнему отображаются публикации.
Крючок pre_get_posts Или же плагин ограничения может изменять запрос только в режиме администратора. Найдите фрагмент кода, который принудительно... post_status, authorили posts_per_page без гарантий is_admin().
Как лучше всего наклеить пластырь длительного действия?
Un мю-плагин Если вы хотите, чтобы исправление оставалось активным даже при смене темы, используйте стандартный пользовательский плагин. Избегайте зависимости от темы для реализации административной логики.
Когда мне следует связаться со своим хостинг-провайдером?
Если вы видите ошибки 500 без следа в debug.logИли же могут быть проблемы с правами доступа/OPcache, или PHP слишком старый, и вы не можете его изменить. Сообщите ему точное время теста и URL-адрес. /wp-admin/edit.php для сопоставления с журналами сервера.