2010-11-19 1 views
13

Ho appena iniziato a studiare lo sviluppo di plugin per wordpress e ho ricevuto questo errore quando accedo al menu del mio plugin da admin.Errore Wordpress durante lo sviluppo di un plugin - "Non hai permessi sufficienti per accedere a questa pagina".

Ecco il codice: importer.php

//*************** Admin function *************** 
function oscimp_admin() { 
    include('importer_admin.php'); 
} 

function oscimp_admin_actions() { 
    add_options_page("OSCommerce Product Display", "OSCommerce Product Display", 1, "OSCommerce Product Display", "oscimp_admin"); 
} 

add_action('admin_menu', 'oscimp_admin_actions'); 

importer_admin.php

<div class="wrap"> 
<?php echo "<h2>" . __('OSCommerce Product Display Options', 'oscimp_trdom') . "</h2>"; ?> 

<form name="oscimp_form" method="post" action="<?php echo str_replace('%7E', '~', $_SERVER['REQUEST_URI']); ?>"> 
    <input type="hidden" name="oscimp_hidden" value="Y"> 
    <?php echo "<h4>" . __('OSCommerce Database Settings', 'oscimp_trdom') . "</h4>"; ?> 
    <p><?php _e("Database host: "); ?><input type="text" name="oscimp_dbhost" value="<?php echo $dbhost; ?>" size="20"><?php _e(" ex: localhost"); ?></p> 
    <p><?php _e("Database name: "); ?><input type="text" name="oscimp_dbname" value="<?php echo $dbname; ?>" size="20"><?php _e(" ex: oscommerce_shop"); ?></p> 
    <p><?php _e("Database user: "); ?><input type="text" name="oscimp_dbuser" value="<?php echo $dbuser; ?>" size="20"><?php _e(" ex: root"); ?></p> 
    <p><?php _e("Database password: "); ?><input type="text" name="oscimp_dbpwd" value="<?php echo $dbpwd; ?>" size="20"><?php _e(" ex: secretpassword"); ?></p> 
    <hr /> 
    <?php echo "<h4>" . __('OSCommerce Store Settings', 'oscimp_trdom') . "</h4>"; ?> 
    <p><?php _e("Store URL: "); ?><input type="text" name="oscimp_store_url" value="<?php echo $store_url; ?>" size="20"><?php _e(" ex: http://www.yourstore.com/"); ?></p> 
    <p><?php _e("Product image folder: "); ?><input type="text" name="oscimp_prod_img_folder" value="<?php echo $prod_img_folder; ?>" size="20"><?php _e(" ex: http://www.yourstore.com/images/"); ?></p> 


    <p class="submit"> 
    <input type="submit" name="Submit" value="<?php _e('Update Options', 'oscimp_trdom') ?>" /> 
    </p> 
</form> 
</div> 

Chiunque può capire che cosa sto facendo male.

risposta

16

Il problema è il quarto parametro. Ho rimosso gli spazi dal quarto parametro con _ e funziona.

Grazie per il vostro aiuto ...

+0

Mi dispiace che ho avuto modo di dire: Grazie per questo! ;) – swdev

0

scrivere il codice del file importer_admin.php all'interno della funzione oscimp_admin() o utilizzare la funzione php file_get_contents.

0

Ho appena provato a modificare il 4 ° parametro in add_options_page con basename (_ FILE _); dovrebbe essere lo stesso valore con "importer.php" nel tuo caso. Non so esattamente a cosa dovrebbe essere cambiato, ma è un lavoro!

Buona fortuna!

6

Il tutorial reale può essere trovano HERE. E dovrebbe funzionare con la versione 2.9.2 di Wordpress, almeno funziona per me. Ma, quando provo a eseguire il codice del tutorial con la versione 3.1, mi dà lo stesso errore. Ma, come menzione dal Avinash linea

add_options_page(“OSCommerce Product Display”, “OSCommerce Product Display”, 1, “OSCommerce Product Display”, “oscimp_admin”); 

Dovrebbe essere sostituirli con

add_options_page(“OSCommerce Product Display”, “OSCommerce Product Display”, 1, “OSCommerce_Product_Display”, “oscimp_admin”); 

e allora funziona correttamente. Spero che ne aiuti qualcuno.

UPDATE:

Come giustamente affermato dal Francisco Corrales al di sotto del commento si può considerare di disattivare il plugin & Attivare di nuovo se non si è visto le modifiche.

+0

Terribile tutorial. Questo cambiamento non ha fatto alcuna differenza per me. – JohnnyBizzle

+1

Per favore rendi più chiaro, trascorro 5 minuti con queste righe. È importante aggiungere che è necessario disattivare il plug-in e attivarlo nuovamente. –

+0

Grazie a Francisco Corrales. Aggiunto il tuo commento alla risposta. BTW posso sapere quale versione di WP stai usando per questo plugin? – enam

0

Sì, Forth parametro è il nome univoco, e per qualsiasi identificatore univoco dovrebbe contenere lo spazio, questo è il problema :)

1

su Wordpress 3.6.1 sottolinea nemmeno funzionano più. La funzione dovrebbe essere:

function oscimp_admin_actions() { 
    add_options_page("OSCommerce Product Display", "OSCommerce Product Display", 1, "OSCommerceProductDisplay", "oscimp_admin"); 
} 
3

Una possibile causa di questo errore è effettivamente registrando menu dell'amministratore su admin_init gancio azione, invece di admin_menu. Questo non è il caso, ma è bene condividere queste informazioni, poiché mi ci sono volute ore per capirlo.

Quindi, sempre registrare i menu come questo (e rimuovere gli spazi o altri caratteri non alfanumerici dal slug unico - il 4 ° parametro della funzione add_options_page()):

Inizialmente

add_action('admin_menu', 'your_function'); 

e quindi (controllare prima se la funzione esiste)

if (!function_exists('your_function')) { 
    function your_function() { 
     add_options_page(__("Option page name","your-text-domain"), __("Option page name","your-text-domain"), 'manage_options', 'your-page-unique-slug', 'other_function'); 
    } 
} 

Nota l'utilizzo o f __() invece di posizionare direttamente i titoli - è necessario per l'internazionalizzazione del proprio plug-in (e visualizza il testo quotato se non ci sono file di internazionalizzazione).