Ce ar putea cauza ca pagina de opțiuni/setări ale plugin-ului meu să nu se încarce?

30 mar. 2011, 00:43:22
Vizualizări: 5.23K
Voturi: 1

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.

2
Comentarii

Poate o problemă cu apelul flush rules? Ai încercat fără el? (Doar o presupunere)..

t31os t31os
30 mar. 2011 01:05:00

@t31os: Bingo. Te rog să faci asta răspunsul tău dacă dorești și voi vota și selecta. A trebuit să comentez flush rules. De ce?

Scott B Scott B
30 mar. 2011 06:55:53
Toate răspunsurile la întrebare 2
1

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

30 mar. 2011 12:06:38
Comentarii

Mulțumesc. Asta a fost. A trebuit doar să mut regulile de flush după instrucțiunea include. Deși încă nu știu de ce

Scott B Scott B
30 mar. 2011 18:04:40
2

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.

30 mar. 2011 04:24:21
Comentarii

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

Scott B Scott B
30 mar. 2011 06:23:48

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.

Scott B Scott B
30 mar. 2011 07:18:24