Wordpress Error while developing a plugin -“You do

2019-04-04 14:24发布

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.

标签: php wordpress
7条回答
仙女界的扛把子
2楼-- · 2019-04-04 14:44

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!

查看更多
家丑人穷心不美
3楼-- · 2019-04-04 14:49

The problem is fourth parameter. I have removed the spaces from the fourth parameter with _ and it works.

Thanks for your help...

查看更多
Juvenile、少年°
4楼-- · 2019-04-04 14:49

On Wordpress 3.6.1 not even underscores work anymore. The function should now be:

function oscimp_admin_actions() {
    add_options_page("OSCommerce Product Display", "OSCommerce Product Display", 1, "OSCommerceProductDisplay", "oscimp_admin");
}
查看更多
对你真心纯属浪费
5楼-- · 2019-04-04 14:55

One possible cause of this error is actually registering admin menus on admin_init action hook, instead of admin_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

add_action('admin_menu', 'your_function');

and then (check first if function exists)

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

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).

查看更多
Luminary・发光体
6楼-- · 2019-04-04 15:03

write your importer_admin.php file code inside oscimp_admin() function or use php file_get_contents function.

查看更多
我欲成王,谁敢阻挡
7楼-- · 2019-04-04 15:09

Yes, Forth parameter is Unique name, and for any Unique identifier it should contain space, That's the issue :)

查看更多
登录 后发表回答