I have just started learning wordpress plugin development and got this error when I access the my plugin menu from admin.
Here is the 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>
Any one can figure out what I am doing wrong.
7
Answers
The problem is fourth parameter. I have removed the spaces from the fourth parameter with _ and it works.
Thanks for your help...
write your importer_admin.php file code inside oscimp_admin() function or use php file_get_contents function.
I just tried to change the 4th parameter in add_options_page with basename(_FILE_); should be the same value with “importer.php” in your case. I don’t know exactly what it should be changed to, but it’s work!
Good luck!
The actual tutorial can be find HERE. And it should work with 2.9.2 version of WordPress, at least it works for me. But, when I try to run the code of the tutorial with version 3.1 it give me the same error. But as mention by Avinash the line
Should be replace with
and then it works properly. Hope it helps some one.
UPDATE:
As rightly stated by Francisco Corrales at below comment you may consider to Deactivate the Plugin & Activate it again if you are not seeing the changes.
Yes, Forth parameter is Unique name, and for any Unique identifier it should contain space, That’s the issue 🙂
On WordPress 3.6.1 not even underscores work anymore. The function should now be:
One possible cause of this error is actually registering admin menus on
admin_init
action hook, instead ofadmin_menu
. This is not the case here, but it is good to share this information, since it took me hours to figure that out.So always register your menus like this (and remove spaces or any other non alphanumeric characters from the unique slug – the 4th parameter of the function
add_options_page()
):Initially
and then (check first if function exists)
Note the usage of
__()
function instead of directly placing the titles – it is necessary for internationalization of your plug-in (and it displays the quoted text if there are no internationalization files).