Ce ar putea cauza ca pagina de opțiuni/setări ale plugin-ului meu să nu se încarce?
Am o problemă cu un site în care este instalat plugin-ul meu. Pagina de "setări" nu se încarcă. Când dau click pe "setări", se încarcă pagina de setări, dar pagina este goală după div-ul "Upgrade to 3.1", ca și cum ar fi un die() acolo.
Am două fișiere, plugin.php și plugin-admin.php
Am cod în plugin.php pentru a configura pagina de administrare:
$my_dir = plugins_url('/img', __FILE__);
add_options_page(
'Setări MY!',
'Setări MY!',
'manage_options',
'my-plugin-admin.php',
'my_settings_admin',
$my_dir.'/favicon.png', 'top'
);
register_setting( 'my_settings_options', 'my_settings', 'my_settings_validate' );
function my_settings_admin(){
global $wp_rewrite;
$wp_rewrite->flush_rules();
include_once dirname(__FILE__) . '/my-plugin-admin.php';
}
define( 'my_BASENAME', plugin_basename( __FILE__ ) );
define( 'my_BASEFOLDER', plugin_basename( dirname( __FILE__ ) ) );
define( 'my_FILENAME', str_replace( my_BASEFOLDER.'/', '', plugin_basename(__FILE__)));
Link-ul "Setări MY!" apare sub meniul "Setări" fără probleme, iar link-ul pare să ducă la pagina corectă, dar scriptul nu se încarcă și nimic nu se urmărește în interiorul my-plugin-admin.php
Idei?
ACTUALIZARE: cu ajutorul lui t31os, iată funcția actualizată care rezolvă problema:
function my_settings_admin(){
include_once dirname(__FILE__) . '/my-plugin-admin.php';
global $wp_rewrite;
$wp_rewrite->flush_rules();
}
Trebuia doar să mut wp_rewrite și flush rules după instrucțiunea include. Deși nu știu de ce.

Dacă ar fi să ghicesc cauza problemei, prima mea idee ar fi legată de apelul flush rules.
După cum a spus Andy, activarea debug-ului ajută foarte mult, iar dacă nu dorești să vezi erorile, poți folosi întotdeauna jurnalul de depanare, folosind următoarele în fișierul de configurare..
define('WP_DEBUG', true); // Activează modul depanare
define('WP_DEBUG_LOG', true); // Înregistrează erorile în wp-content/debug.log
define('WP_DEBUG_DISPLAY', false); // Dezactivează afișarea erorilor
În ceea ce privește faptul că actualizarea setărilor nu redirecționează, de obicei acest lucru se întâmplă când nonce-urile lipsesc sau sunt incorecte, deși recunosc că în cazul tău ar putea fi altceva.
Sunt afișate erori cu debug-ul activat? (sau în jurnal dacă folosești această metodă?)

Când folosesc codul pe care l-ai furnizat, văd elementul de meniu "Setări MELE!" ca primul element din meniul Setări și are un URL neașteptat.
Apelul către add_options_page
ar trebui să fie încapsulat într-o funcție legată la acțiunea admin_menu
.
function my_admin_menu() {
add_options_page(
'Setări MELE!',
'Setări MELE!',
'manage_options',
'my-admin',
'my_settings_admin'
);
}
add_action( 'admin_menu', 'my_admin_menu' );
În general, folosește define( 'WP_DEBUG', true )
în fișierul tău wp-config.php
pentru a putea vedea erorile și avertismentele.

Mulțumesc Andy, am încapsulat totul într-o funcție, greșeala mea că nu am specificat asta.

Problema este așa cum a indicat t31os, legat de regulile de flush. A trebuit să le plasez după include once și nu înainte. Acum scriptul se încarcă. Totuși, cu debug activat, click-urile mele pentru salvarea opțiunilor sunt redirecționate către options.php și nu înapoi la opțiunile pluginului cum mă așteptam.
