2010-11-19 8 views
13

Ich habe gerade angefangen WordPress Plugin-Entwicklung zu lernen und bekam diesen Fehler, wenn ich auf das Plugin-Menü von admin zugreifen. HierWordpress Fehler beim Entwickeln eines Plugins - "Sie sind nicht berechtigt, auf diese Seite zuzugreifen."

ist der Code: 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> 

kann Jeder herauszufinden, was ich falsch mache.

Antwort

16

Das Problem ist der vierte Parameter. Ich habe die Leerzeichen aus dem vierten Parameter mit _ entfernt und es funktioniert.

Danke für Ihre Hilfe ...

+0

Es tut mir leid, dass ich sagen muss: Danke dafür! ;) – swdev

0

Schreiben Sie den Dateicode importer_admin.php in die Funktion oscimp_admin() oder verwenden Sie die Funktion php file_get_contents.

0

Ich habe gerade versucht, den 4. Parameter in add_options_page mit Basisname zu ändern (_ FILE _); sollte in Ihrem Fall mit "importer.php" gleich sein. Ich weiß nicht genau, wozu es geändert werden sollte, aber es ist Arbeit!

Viel Glück!

6

Die eigentlichen Tutorial HERE finden werden. Und es sollte mit 2.9.2 Version von Wordpress funktionieren, zumindest funktioniert es für mich. Aber wenn ich versuche, den Code des Tutorials mit Version 3.1 zu starten, bekomme ich denselben Fehler. Aber wie erwähnt von Avinash der Linie

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

Sollte ersetzen mit

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

und dann funktioniert es richtig. Hoffe, es hilft jemandem.

UPDATE:

Wie bereits erwähnt zu Recht Francisco Corrales im Kommentar unten Sie das Plugin & deaktivieren können prüfen aktiviert es wieder, wenn Sie die Änderungen nicht zu sehen sind.

+0

Schreckliches Tutorial. Diese Veränderung machte keinen Unterschied für mich. – JohnnyBizzle

+1

Bitte machen Sie es klarer, ich verbringe 5 Minuten mit diesen Zeilen. Es ist wichtig hinzuzufügen, dass Sie das Plugin deaktivieren müssen und es wieder aktivieren. –

+0

Danke Francisco Corrales. Dein Kommentar wurde bei der Antwort hinzugefügt. BTW kann ich wissen, welche WP Version du für dieses Plugin verwendest? – enam

0

Ja, Forth Parameter Eindeutiger Name, und für jede eindeutige Kennung es Raum enthalten sollte, ist, dass das Problem :)

1

auf Wordpress 3.6.1 nicht einmal Arbeit unterstreicht mehr. Die Funktion soll jetzt sein:

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

Eine mögliche Ursache für diesen Fehler ist Admin-Menü auf admin_init Aktion Haken tatsächlich Registrierung statt admin_menu. Dies ist hier nicht der Fall, aber es ist gut, diese Informationen zu teilen, da ich Stunden gebraucht habe, um das herauszufinden.

Also immer Ihre Menüs wie dieses Register (und entfernen Sie Leerzeichen oder andere nicht alphanumerische Zeichen aus dem einzigartigen Slug - der 4. Parameter der Funktion add_options_page()):

Anfangs

add_action('admin_menu', 'your_function'); 

und dann (prüfen Sie zuerst, ob die Funktion existiert)

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

Beachten Sie die Verwendung o f __() Funktion statt direkt die Titel zu platzieren - es ist notwendig für die Internationalisierung Ihres Plugins (und es zeigt den zitierten Text an, wenn es keine Internationalisierungsdateien gibt).

Verwandte Themen