Ich habe gerade angefangen, die Entwicklung von WordPress-Plugins zu lernen, und habe diesen Fehler erhalten, wenn ich über den Administrator auf das Menü „Mein Plugin“ zugreife.
Hier 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>
Jeder kann herausfinden, was ich falsch mache.
Das Problem ist der vierte Parameter. Ich habe die Leerzeichen aus dem vierten Parameter mit _ entfernt und es funktioniert.
Danke für Ihre Hilfe…

Email
Das eigentliche Tutorial kann gefunden werden HIER. Und es sollte mit der Version 2.9.2 von WordPress funktionieren, zumindest funktioniert es bei mir. Aber wenn ich versuche, den Code des Tutorials mit Version 3.1 auszuführen, erhalte ich den gleichen Fehler. Aber wie erwähnt von Avinash die Linie
add_options_page(“OSCommerce Product Display”, “OSCommerce Product Display”, 1, “OSCommerce Product Display”, “oscimp_admin”);
Sollte durch ersetzt werden
add_options_page(“OSCommerce Product Display”, “OSCommerce Product Display”, 1, “OSCommerce_Product_Display”, “oscimp_admin”);
und dann funktioniert es richtig. Hoffe es hilft jemandem.
AKTUALISIEREN:
Wie zu Recht von angegeben Francisco Corrales Im folgenden Kommentar können Sie das Plugin deaktivieren und erneut aktivieren, wenn Sie die Änderungen nicht sehen.
Eine mögliche Ursache für diesen Fehler ist die Registrierung von Admin-Menüs admin_init
Aktionshaken, 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.
Registrieren Sie Ihre Menüs also immer so (und entfernen Sie Leerzeichen oder andere nicht alphanumerische Zeichen aus dem eindeutigen Slug – the 4 Parameter der Funktion add_options_page()
):
Anfänglich
add_action('admin_menu', 'your_function');
und dann (zuerst prüfen, ob Funktion vorhanden ist)
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 von __()
Funktion anstelle der direkten Platzierung der Titel – es ist für die Internationalisierung Ihres Plug-Ins erforderlich (und es zeigt den zitierten Text an, wenn keine Internationalisierungsdateien vorhanden sind).
Auf WordPress 3.6.1 funktionieren nicht einmal mehr Unterstriche. Die Funktion sollte nun lauten:
function oscimp_admin_actions() {
add_options_page("OSCommerce Product Display", "OSCommerce Product Display", 1, "OSCommerceProductDisplay", "oscimp_admin");
}
Schreiben Sie den Code Ihrer Datei importer_admin.php in die Funktion oscimp_admin() oder verwenden Sie die Funktion file_get_contents von PHP.

Glückspilz_look
Ich habe gerade versucht, den 4. Parameter in add_options_page mit basename(_DATEI_); sollte in Ihrem Fall der gleiche Wert wie “importer.php” sein. Ich weiß nicht genau, was es geändert werden sollte, aber es ist Arbeit!
Viel Glück!

Gaurang
Ja, der Forth-Parameter ist ein eindeutiger Name, und für jede eindeutige Kennung sollte er Leerzeichen enthalten. Das ist das Problem 🙂
10033600cookie-checkWordPress-Fehler beim Entwickeln eines Plugins – „Sie haben keine ausreichenden Berechtigungen, um auf diese Seite zuzugreifen.“yes