Ak ste už klikli na Články vo wp-admin a všetko zamrzne so zvláštnou chybou, ako napríklad „v3.1.1 nedokáže otvoriť wp-admin 'články'...“, pravdepodobne máte konflikt medzi pluginom (verzia 3.1.1), úryvkom a stránkou so zoznamom príspevkov (edit.php).


Problém

Presná správa sa líši v závislosti od pluginu, servera a jazyka, ale trasovanie, ktoré často začína takto (v biela obrazovka(500-stranový alebo PHP protokol):

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.

Kde sa objavuje:

  • Iba pre správcov otvorením Články> Všetky články (Typická URL adresa: /wp-admin/edit.php), niekedy aj Add On (URL: /wp-admin/post-new.php).
  • Niekedy v AJAX :écran načítať, potom akcia (filter, vyhľadávanie, rýchla úprava) spustí chybu.
  • Zriedkavejšie v REST API Ak plugin upraví požiadavku na odoslanie cez REST, môže to ovplyvniť aj Gutenberg.

Typické situácie, s ktorými som sa stretol pri riešení problémov:

  • Hneď po aktualizácii pluginu v3.1.1 (číslo „3.1.1“ je takmer vždy číslo pluginu, nie WordPress).
  • Po pridaní úryvku „na premenovanie príspevkov na články“ zo starého tutoriálu.
  • Po aktivácii SEO/presmerovacieho/bezpečnostného pluginu, ktorý ovplyvňuje funkcie alebo ponuku administrátora.
  • Na stránkach používajúcich Divi 5, Elementor alebo Avada: tieto nástroje na tvorbu kódu priamo nefungujú edit.php, ale často koexistujú s „úryvkami“ a pluginmi, ktoré ho narúšajú.

Pre koho je táto príručka určená? Ak ste začiatočník, budete vedieť identifikovať Ktorá tehla rozbije obrazovku? Článkyznovu získať prístup k administrátorskému panelu a použiť čistú opravu pre WordPress 6.9.4 (apríl 2026) a PHP 8.1+.

Rýchle zhrnutie

  • Menu Články smeruje k /wp-admin/edit.phpAk táto stránka zlyhá, je to takmer vždy preto, že... admin hook (akcia/filter) pluginu alebo úryvku.
  • Začnite aktiváciou WP_DEBUG_LOG a / alebo Health Check izolovať chybný plugin bez narušenia verejnej stránky.
  • Bežný prípad: nesprávne deklarovaný kód CPT „výrobky“ (register_post_type()) s nekonzistentné schopnosti alebo slimák ktorý vstupuje do konfliktu.
  • Po korekcii: znova uložte trvalé odkazy a vymažte vyrovnávaciu pamäť (plugin/server/prehliadač).
  • Ak už nemáte prístup k wp-admin: deaktivujte doplnok cez FTP (premenujte priečinok) alebo WP-CLI.

Príznaky

Tu je to, čo môžete pozorovať, od najčastejších až po tie najzavádzajúcejšie:

  • plátno blanc en cliquant sur Články, niekedy s chybou „Kritická chyba“.
  • erreur 500 iba na /wp-admin/edit.php (ostatné administrátorské stránky fungujú).
  • „Prepáčte, nemáte oprávnenie na prístup k tejto stránke.“ kým ste administrátor.
  • Prázdny zoznam článkov (0 výsledkov), ale články existujú.
  • Nefunkčné filtre/vyhľadávanie (Stránka sa načíta a potom sa zrúti počas triedenia podľa autora/kategórie).
  • Rýchla úprava (Rýchla úprava), ktorá sa už neotvára alebo beží donekonečna (často problém s AJAX).
  • Konzola prehliadača (F12): Chyby JS na edit.php (často prepojené so skriptom vloženým doplnkom).

Znaky konfliktu medzi pluginom a témou:

  • Problém zmizne, ak zakážete „nedávno aktualizovaný“ doplnok.
  • Problém sa objavuje iba pri určitých rolách (editor, autor): podozrenie ohľadom možnosti.
  • Problém sa objaví po vložení „úryvku“ do functions.php (podradená téma) alebo plugin pre úryvky.

Rýchla diagnóza: ak /wp-admin/edit.php?post_type=page (Stránky) funguje, ale /wp-admin/edit.php (Príspevky) prestávky, často máme do činenia s kódom, ktorý je špecificky zameraný post alebo v ponuke „Články“.

Prečo sa to deje?

Verzia pre začiatočníkov: obrazovka Články Toto je štandardná administrátorská stránka. Mnoho pluginov túto stránku „vylepšuje“ (stĺpce, filtre, triedenie, obmedzenia rolí, štatistiky). Ak plugin (alebo úryvok kódu) vykoná chybu PHP/JS, táto stránka zlyhá.

Tu je to, čo sa deje v zákulisí: WordPress sa načítava wp-admin/edit.php, zostaví zoznamový dotaz (WP_Query), potom vykoná sériu hákyHák je predĺžovací bod. akčná vykoná kód v danom čase, filtre upravuje hodnotu (napr. dotaz, stĺpce, HTML). Ak filter vráti nesprávny typ (napr. null (namiesto poľa), PHP 8.1+ je menej permisívne a môže spustiť Zadajte chybu.

Pravdepodobné príčiny (od najčastejších po najzriedkavejšie):

  • Plugin v3.1.1 je chybový čo pridáva stĺpce/filtre do zoznamu príspevkov a spúšťa fatálnu chybu.
  • Starý úryvok (pred PHP 8 / predmoderný WordPress), ktorý používa nevhodný hook alebo nenačítanú funkciu.
  • Články CPT zaregistrované so slugom/schopnosťami, ktoré kolidujú s „post“ (natívne články) a porušujú povolenia.
  • Konflikt REST/prepísania po migrácii: trvalé odkazy neboli obnovené, pravidlá prepisovania sú zastarané.
  • Agresívna vyrovnávacia pamäť (vyrovnávacia pamäť administrátora je extrémne zriedkavá, ale možná prostredníctvom nesprávne nakonfigurovaného reverzného proxy) alebo minifikácia JS, ktorá narúša funkčnosť administrátorského rozhrania.
  • Problém so serverom Príliš málo pamäte PHP, poškodená OPcache, povolenia súborov alebo PHP < 8.1.

Poznámka „v3.1.1“: WordPress 6.9.4 nemá „v3.1.1“. Ak vidíte „v3.1.1“, takmer vždy ide o verziu pluginu (alebo témy). Diagnostický proces zahŕňa identifikáciu, o ktorú verziu ide.

Predpoklady pred začatím

  • zabezpečiť : databáza + súbory. Netestujte „náhodne“ v produkčnom prostredí.
  • Testovacie prostredie ak je to možné (staging). Často som videl, ako jednoduchá chýbajúca bodkočiarka blokuje celé administrátorské rozhranie.
  • verzia WordPress 6.9.4 a PHP 8.1+ (ideálne 8.2/8.3, ak to váš poskytovateľ hostingu umožňuje). Nahlásiť sa Nástroje > Stav lokality.
  • outils :

Povoliť protokoly WordPressu (v wp-config.php(vyššie „zastaviť úpravy“):

define( 'WP_DEBUG', true );
define( 'WP_DEBUG_LOG', true );
define( 'WP_DEBUG_DISPLAY', false ); // Affichez false en prod pour éviter de divulguer des infos

Oficiálna referencia: Ladenie vo WordPress.

Bezpečnostné riziko V produkčnom prostredí nikdy nezobrazujte chyby PHP na obrazovke. Trasovanie zásobníka môže odhaliť cesty, verzie a niekedy aj tajné kódy.

Riešenie 1: Oprava „článkov“ (slug/schopnosti) CPT, ktoré narúšajú zobrazovanie administrátorskej obrazovky

Toto sa stane, keď niekto chce „vytvoriť typ obsahu Články“, pričom WordPress už nazýva natívne príspevky „Články“ (post). Výsledok: mätúce označenia, duplicitné ponuky a niekedy aj obrazovka „Nemáte autorizáciu…“ alebo zlyhanie stránky, ak doplnok očakáva post ale dostane ďalší post_type.

koncepty :

  • CPT = Vlastný typ príspevku (vlastný typ obsahu), deklarovaný prostredníctvom register_post_type().
  • Slimák = identifikátor URL (napr. article), používa sa v permalinkoch a niekedy aj v administrácii.
  • Možnosti = povolenia (napr. edit_posts, edit_pagesAk sú nesprávne namapované, administrátor prístup zamietne.

Kedy podozrievať túto príčinu

  • Máte menu „Články“, ktoré neotvára obvyklý zoznam príspevkov.
  • Vidíte URL adresu typu /wp-admin/edit.php?post_type=articles.
  • Problém sa začal po pridaní úryvku kódu „register_post_type('articles', …)“.

Kde opraviť

Správne miesto: malý vlastný plugin (odporúčané) alebo mu-plugin (vyžaduje sa plugin), ak chcete mať istotu, že sa načíta aj po zmene témy.

  • Nevkladajte toto do pluginu úryvkov. Ak ste v režime riešenia problémov: ak sa doplnok úryvkov pokazí, stratíte prístup.
  • Ak to potrebujete urobiť rýchlo: detská téma functions.php, ale je krehkejší.

Kód BEFORE (poškodený)

Realistický príklad, s ktorým sa často stretávam (slugové „články“, nekonzistentné možnosti a kolízie označení):

<?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,
	] );
} );

Prečo sa to láme: s capability_type => 'page' et map_meta_cap => falseVytvoríte typ, ktorý sa správa ako stránky pre povolenia, ale bez správneho mapovania. V závislosti od rolí a bezpečnostných doplnkov môže byť prístup k zoznamu odmietnutý alebo môže spôsobiť chyby pri výpočte limitov vo WordPresse.

Kód PO (opravený)

Cieľ: vyhnúť sa konfliktu s „článkami“ (natívnymi príspevkami) a mať konzistentné povolenia. Odporúčam:

  • Jednoznačný slug a identifikátor (napr. mag_article ou ressource).
  • Explicitné označenia (napr. „Zdroje“).
  • Schopnosti správne namapované prostredníctvom 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 );

Prečo to opravuje

  • Vyhnete sa mentálnej a technickej kolízii s „článkami“ (natívnymi príspevkami).
  • WordPress vie, ako vypočítať oprávnenia „ako príspevok“ (štandard), čo výrazne znižuje konflikty s pluginmi pre role/zabezpečenie.
  • CPT je kompatibilný s REST/Gutenbergom (show_in_rest), čo zabraňuje zvláštnemu správaniu v editore.

Dôležitý krok po tejto korekcii

ísť Nastavenia> Trvalé odkazy a kliknite Registrovať (bez akejkoľvek zmeny). Toto prinúti WordPress regenerovať pravidlá prepisovania.

Oficiálny dokument: register_post_type().

Tento scenár je bežný po:

  • Migrácia webových stránok (zmena URL adresy),
  • Aktivácia/deaktivácia pluginu, ktorý vytvára CPT/taxonómie,
  • Aktualizácia pluginu „v3.1.1“, ktorý upravuje jeho slugy,
  • obnovenie čiastočnej zálohy.

Toto nie vždy spôsobí fatálnu chybu PHP. Niekedy sa otvorí obrazovka „Články“, ale určité filtre alebo akcie odošlú požiadavky, ktoré zlyhajú (REST/AJAX) a rozhranie sa javí ako „nefunkčné“.

Rýchla diagnostika (bez nutnosti kódu)

  • skúška /wp-admin/edit.php potom /wp-admin/edit.php?post_status=trash.
  • Otvorte konzolu prehliadača (F12) a pozrite sa na kartu Sieť: volania funkcie /wp-json/ v 404/401/500?
  • ísť Nástroje > Stav lokality a skontrolujte odporúčania (REST API, slučky atď.).

Oprava 1: Čisté vyprázdnenie permanentných odkazov (UI)

Najbezpečnejšia možnosť: Nastavenia> Trvalé odkazy > Registrovať.

Oprava 2: Vyprázdnenie cez WP-CLI (ak je administrátorské rozhranie nestabilné)

Ak máte WP-CLI (často na VPS/spravovanom hostingu), spustite:

wp rewrite flush --hard

Referencia WP-CLI: prepísať flush vo WP.

Kód PRED (poškodený): spláchnutie na nesprávnom mieste

Videl som, že tento úryvok spôsobuje spomalenia, časové limity a dokonca aj nepravidelné správanie v režime správcu:

<?php
// EXEMPLE CASSÉ : flush à chaque chargement
add_action( 'init', function() {
	flush_rewrite_rules(); // Très mauvais : lourd, et peut provoquer des effets de bord
} );

Kód AFTER (opravený): spláchnutie iba pri aktivácii

Umiestnite tento kód do vlastný doplnok (napr.: /wp-content/plugins/mon-fix/mon-fix.php), potom ho aktivujte. Potom si ho môžete ponechať (bez trvalého vymazania) alebo ho odstrániť.

<?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();
} );

Prečo to opravuje

  • Eliminujete anti-vzor: flush_rewrite_rules() nemal by otáčať každú stranu.
  • Pravidlá resetujete po zmene CPT/slug, čo stabilizuje niektoré administrátorské obrazovky a súvisiace koncové body REST/AJAX.

Oficiálny dokument: flush_rewrite_rules().

Riešenie 3: Vyhľadajte fatálnu chybu PHP na obrazovke „Články“ (administratívne hooky, stĺpce, filtre)

Toto je najčastejšia príčina chyby „v3.1.1 nedokáže otvoriť články wp-admin…“. Plugin (v3.1.1) alebo úryvok kódu pridá stĺpec, upraví dotaz alebo filtruje riadky a spustí chybu PHP (TypeError, nedefinovaná funkcia atď.).

Krok 1: Nájdite presnú chybu

otvorené wp-content/debug.log po reprodukcii chyby (kliknite na Články). Hľadajte riadok s cestou „PHP Fatal error“, ako je táto:

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 ...

Ak nemáte protokol, nainštalujte si Query Monitor a pozrite sa na kartu „CHyby PHP“ (ak sa stránka načítava iba čiastočne). Dokumentácia k Query Monitor: WordPress.org.

Krok 2: Izolácia bez narušenia verejného miesta (kontrola stavu)

s Kontrola stavu a riešenie problémov :

  1. Aktivujte režim riešenia problémov (iba pre vašu reláciu).
  2. skúška ČlánkyAk to funguje: problém pochádza z pluginu/témy, ktorá bola deaktivovaná v režime riešenia problémov.
  3. Postupne aktivujte doplnky, kým sa nezopakuje pád.

Podľa mojich skúseností je to najrýchlejší spôsob, ako identifikovať „plugin v3.1.1“ bez toho, aby bola stránka nedostupná.

Typický prípad: stĺpcový filter, ktorý vracia nesprávny typ

O edit.phpMnoho kódov používa filter manage_posts_columns (alebo manage_edit-post_columns) na pridanie stĺpcov. Klasická chyba v PHP 8+: vrátenie null namiesto maľby.

Kód BEFORE (poškodený)

Realistický príklad: plugin/úryvok kódu chce odstrániť stĺpec, ale zabudne vrátiť pole:

<?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 );

Možný výsledok: ďalej WordPress (alebo iný plugin) vykonáva array_merge() sur $columns a získa null → Chyba typu → Obrazovka Položky mimo poradia.

Kód PO (opravený)

Vložte túto opravu do vlastného pluginu (alebo functions.php (s detskou tematikou) po uloženíAk máte podozrenie na problém s pluginom, opravte ho vo vlastnom kóde a deaktivujte problematický plugin.

<?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 );

Prečo to opravuje

  • Filter mušt vrátiť hodnotu. V opačnom prípade WordPress načíta null.
  • Ochranná ochrana is_array() chráni vás, aj keď iný plugin vráti nesprávny typ.

Oficiálna dokumentácia o hookoch (akciách/filtroch): API doplnku: Hooky.

Typický prípad: hook „pre-request“, ktorý preruší zoznam (pre_get_posts)

Ďalšia klasická chyba: chcete filtrovať príspevky v administrátorskom paneli a upravíte všetky dopyty vrátane tých v administrátorskom zozname. Stránka „Články“ sa vyprázdni, spomalí alebo zlyhá, ak sa dopyt stane neplatným.

Kód BEFORE (poškodený)

<?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' );

} );

Kód PO (opravený)

Cieľ: upraviť iba hlavný front-end request, nie administrátorský panel. Umiestniť ho do vlastného pluginu alebo podradenej témy.

<?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 );

Oficiálny dokument: pre_get_posts.

Typický prípad: JS skript vložený do administrátorského panela, ktorý narúša fungovanie edit.php

Ak konzola zobrazuje chyby JS, hľadajte plugin, ktorý zaraďuje skript do frontu v rámci administrácie, niekedy minimalizovaný, niekedy závislý od chýbajúcej knižnice.

Kód BEFORE (poškodený)

<?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
	);
} );

Kód PO (opravený)

Zameriavame sa iba na obrazovku „Články“ (príspevky) a deklarujeme primerané závislosti.

<?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 );

Oficiálny dokument: admin_enqueue_scripts et wp_enqueue_script ().

Kontroly po korekcii

  • Dobitie /wp-admin/edit.php v režime súkromného prehliadania (vyhýba sa agresívnemu ukladaniu do vyrovnávacej pamäte).
  • Vyskúšajte to:
    • Hľadanie článku
    • Filtrujte podľa kategórie
    • Rýchla úprava
    • Košík
  • check wp-content/debug.log : už žiadna „fatálna chyba“ v čase kliknutia.
  • Ak máte doplnok na ukladanie do vyrovnávacej pamäte: vymažte vyrovnávaciu pamäť doplnku + vyrovnávaciu pamäť servera (ak je to relevantné) + vyrovnávaciu pamäť prehliadača.

Ak chyba predstavovala konflikt oprávnení/schopností: otestujte s účtom „Editor“ (nielen s účtom správcu). Mnoho stránok sa „zdá“ byť opravených pre používateľov s administrátorskými oprávneniami, ale pre nižšie role zostáva nefunkčných.

Ak to stále nefunguje

Postup riešenia problémov používam, keď obrazovka „Články“ zostáva neprístupná.

1) Vypnite chybný plugin bez wp-admin (FTP)

  1. Pripojte sa cez FTP/SFTP.
  2. ísť /wp-content/plugins/.
  3. Premenujte priečinok s podozrivým pluginom (napr. mon-pluginmon-plugin.off).
  4. Obnoviť súbor wp-admin.

Ak neviete, ktorý z nich: dočasne ho premenujte plugins en plugins.off (zakáže všetky pluginy) a potom ich postupne znova povoľte a aktivujte.

2) Skontrolujte pamäť PHP

Veľký zoznam článkov (veľa stĺpcov, dopytov, štatistík) môže spôsobiť prudké zvýšenie využitia pamäte. Hľadajte chybu „Povolená veľkosť pamäte…“.

Limit WordPressu môžete zvýšiť (ak to váš poskytovateľ hostingu umožňuje):

<?php
// wp-config.php
define( 'WP_MEMORY_LIMIT', '256M' );
define( 'WP_MAX_MEMORY_LIMIT', '512M' ); // Pour l'admin

Referencia: wp-config.php (konštanty).

3) Skontrolujte verziu PHP

Ak používate PHP 7.4/8.0, niektoré novšie pluginy (alebo WordPress 6.9.4) sa môžu správať odlišne. Snažte sa minimálne o PHP 8.1.

Dokument: Podporované verzie PHP.

4) Skontrolujte chyby REST/AJAX

  • otvorené /wp-json/ : musí odpovedať vo formáte JSON (nie HTML 404).
  • Skontrolujte, či ho neblokuje bezpečnostný doplnok. /wp-json/ ou admin-ajax.php.

Dokument REST: Príručka rozhrania WordPress REST API.

5) Monitor dotazov: identifikácia poškodeného hook/filteru

Ak sa stránka načíta iba čiastočne, Query Monitor vám môže zobraziť:

  • Chyby PHP
  • pomalé dotazy
  • chyba skriptov/štýlov
  • spúšťané háky

6) Posledná možnosť: aktivujte režim obnovenia

WordPress má mechanizmus „režimu obnovenia“, ktorý sa aktivuje, keď doplnok spustí fatálnu chybu v administrátorskom paneli. Ak dostanete e-mail s textom „Na vašej stránke sa vyskytla technická chyba“, použite odkaz na obnovenie na deaktiváciu problematického doplnku.

Dokument: Režim obnovenia (podpora).

Časté úskalia a chyby

Diagnostický graf

symptóm Príčina pravdepodobná overenie Riešenie
Kritická chyba iba v časti „Články“ Plugin v3.1.1 pridáva stĺpce/filtre a rastliny Súbor debug.log zobrazuje cestu v /plugins/... Zakázať/vrátiť späť plugin, opraviť háčik (riešenie 3)
„Prepáčte, nemáte oprávnenie…“ Nesprávne namapované funkcie CPT alebo plugin role Test s administrátorom verzus editor, kontrola CPT Opravte CPT/limity (riešenie 1), skontrolujte plugin pre role
Prázdny zoznam (0 položiek), ale existujú pre_get_posts upravuje požiadavku správcu Zakázať úryvok kódu, skontrolovať kód pre_get_posts Pridajte bezpečnostné opatrenia pre is_admin/is_main_query (riešenie 3)
Rýchla úprava sa neotvorí Chyba zablokovania JS administrátora alebo admin-ajax Konzola F12 + karta Sieť Zacielenie frontu, vypnutie minifikácie, povolenie AJAXu
Problém po migrácii Prepíšte zastarané pravidlá Nastavenia > Trvalé odkazy, test /wp-json/ Vyprázdnenie permalinkov (riešenie 2)

Chyby, ktoré vidím stále

  • Kopírovanie kódu na nesprávne miesto Vloženie úryvku PHP kódu do poľa „CSS“ v nástroji na tvorbu stránok alebo v editore stránok má za následok, že nič nefunguje alebo sa kód zobrazuje ako obyčajný text.
  • Zabudnutie bodkočiarky v functions.php Jednoduchá chyba blokuje všetok prístup wp-admin. Pracujte v testovacom prostredí a udržiavajte prístup k FTP.
  • Použitie nevhodného háčika Napríklad, upravte požiadavku správcu prostredníctvom pre_get_posts sans is_admin().
  • Zmätok medzi zásobami a filtrami Filter musí niečo vrátiť. Akcia to nerobí. V tomto prípade môže chyba návratu poškodiť „Články“.
  • Vyrovnávacia pamäť nebola vymazaná Opravili ste to, ale prehliadač zobrazuje starú verziu JS. Zvýšte verziu skriptu a vymažte vyrovnávaciu pamäť.
  • Testovanie v produkcii bez zálohy : v administrátorskom paneli vás to môže zablokovať.
  • Úryvok poškodený doplnkom pre úryvky Ak sa doplnok snippets zrúti, už ho nemôžete jednoducho deaktivovať. Na opravy je vhodnejší mu-plugin.
  • Kód zo starého tutoriálu Nekompatibilné s PHP 8.1+ (TypeError, požadované parametre atď.).

Variant / alternatíva

Metóda bez kódu: vrátenie späť na verziu „v3.1.1“

Ak ste zistili, že verzia pluginu je „v3.1.1“ a chyba sa objavila ihneď potom:

  • Skontrolujte stránku pluginu na WordPress.org, či tam je nejaká sekcia Rozšírené zobrazenie umožnenie stiahnutia predchádzajúcej verzie.
  • Alebo použite plugin na vrátenie zmien (napr. WP Rollback) s opatrnosťou a iba z dôveryhodného zdroja.

Ďalej otvorte tiket podpory pre plugin pomocou:

  • vaša verzia WordPressu (6.9.4), PHP,
  • kompletný protokol chýb,
  • kroky na reprodukciu.

Pokročilá metóda: „bumpery“ v mu-plugine na zabránenie závažným chybám v súbore edit.php

Keď potrebujete urgentne stabilizovať administrátora, môžete neutralizovať známy háčik (napríklad filter stĺpcov) jeho nahradením obranným kódom. Upozornenie: toto je riešenie. Potom musíte opraviť základný problém.

Príklad: identifikovali ste filter, ktorý niekedy vracia nullPlugin nemôžete upravovať (alebo sa nechcete dotknúť jeho kódu). Pridáte filter v neskoršej fáze, ktorý „opraví“:

<?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 );

Toto „neopraví“ plugin, ale môže vám to znova poskytnúť prístup k obrazovke, aby ste mohli pokračovať v diagnostike.

Vyhnite sa tomuto problému v budúcnosti

  • Nenazývajte CPT „článkami“ : „Články“ ponechajte pre natívne príspevky. Pomenujte svojich CPT podľa ich obchodnej úlohy (zdroje, projekty, recepty…).
  • Žiadne trvalé splachovanie : flush_rewrite_rules() iba pri aktivácii/deaktivácii.
  • Obranný kód na filtroch : overiť typy (is_array, is_string) pri filtrovaní hodnôt používaných inými pluginmi.
  • Systematické stanovenie štádií Pred hlavnými aktualizáciami pluginov môže verzia 3.1.1 obsahovať regresiu na konkrétnej administrátorskej obrazovke.
  • Monitorovanie chýb udržať WP_DEBUG_LOG ľahko aktivovateľné a nastavené rotácie protokolov na strane servera.
  • Pluginy a tvorcovia Divi 5, Elementor a Avada týmto opravám nebránia. Vyhnite sa však výkonnostným pluginom typu „všetko v jednom“, ktoré tiež minimalizujú administrátorské funkcie: to je klasický zdroj chýb JS. edit.php.

Ak vyvíjate: zdokumentujte svoje hooky. Filter, ktorý nič nevracia, je časovaná bomba, najmä s PHP 8.1+.

zdroje

často kladené otázky

Ako zistím, ktorý plugin zodpovedá verzii „v3.1.1“?

Regardez wp-content/debug.log cesta k chybnému súboru takmer vždy ukazuje na /wp-content/plugins/nom-du-plugin/Prípadne použite kontrolu stavu opätovnou aktiváciou doplnkov jeden po druhom.

Nemám prístup k wp-admin, čo mám robiť?

Premenujte priečinok s podozrivým pluginom cez FTP/SFTP (alebo zakážte všetky pluginy ich premenovaním). /wp-content/pluginsPotom sa znova pripojte a postupne reaktivujte.

Mohol by Divi 5 / Elementor / Avada spôsobovať túto chybu?

Zriedkakedy to priamo vyprovokujú edit.phpDoplnok, plugin pre úryvky alebo optimalizácia (minifikácia) nainštalovaná „spolu s nástrojom na tvorbu úryvkov“ však môže narušiť administrátorské rozhranie. Diagnóza zostáva rovnaká: logy + izolácia pluginu.

Prečo sa chyba zobrazuje iba v časti „Články“ a nie inde?

Pretože mnoho pluginov používa špecifické hooky súvisiace so zoznamom príspevkov (stĺpce, triedenie, filtre, obmedzenia). Chyba v tomto kóde sa spustí iba pri wp-admin/edit.php.

Môžem to opraviť úpravou chybného pluginu?

Tomuto sa vyhnite. Akákoľvek aktualizácia prepíše vaše zmeny. Namiesto toho skúste: (1) opravu vo vlastnom plugine/mu-plugine, (2) nahlásenie chyby vývojárovi, (3) prechod na iný plugin, ak podpora nie je k dispozícii.

Opravil som kód, ale nič sa nezmenilo.

Vymažte vyrovnávacie pamäte (plugin, server, prehliadač). Ak ide o JavaScript na administrátorskej úrovni, zvýšte verziu v... wp_enqueue_script()Tiež skontrolujte, či ste upravili správny súbor (podradenú tému vs. nadradenú tému).

„Prepáčte, nemáte oprávnenie...“, aj keď som administrátor.

Toto sa stane, ak doplnok rolí/zabezpečenia upravil funkcie alebo ak má CPT nekonzistentné funkcie. Dočasne deaktivujte doplnok rolí a potom opravte deklaráciu CPT (riešenie 1).

Zoznam článkov je prázdny, ale rozhranie stále zobrazuje príspevky.

Háčik pre_get_posts Alebo obmedzujúci plugin môže upraviť požiadavku iba v administrátorskom režime. Hľadajte úryvok kódu, ktorý vynúti post_status, authorAlebo posts_per_page bez záruk is_admin().

Aký je najlepší spôsob aplikácie dlhotrvajúcej náplasti?

Un mu-plugin Ak chcete, aby oprava zostala aktívna aj po zmene témy, použite štandardný vlastný doplnok. Nespoliehajte sa na tému pre administrátorskú logiku.

Kedy by som mal kontaktovať svojho poskytovateľa hostingu?

Ak vidíte 500 chýb bez stopy v debug.log, alebo by mohli byť problémy s oprávneniami/OPcache, alebo ak je PHP príliš staré a nemôžete ho zmeniť. Dajte mu presný čas testu a URL adresu /wp-admin/edit.php korelovať so serverovými protokolmi.