繁体   English   中英

开发插件时出现Wordpress错误 - “您没有足够的权限访问此页面。”

[英]Wordpress Error while developing a plugin -“You do not have sufficient permissions to access this page.”

我刚刚开始学习wordpress插件开发,当我从admin访问我的插件菜单时出现了这个错误。

这是代码: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>

任何人都可以弄清楚我做错了什么。

问题是第四个参数。 我用_删除了第四个参数中的空格,它可以工作。

谢谢你的帮助...

实际的教程可以在这里找到。 它应该适用于2.9.2版本的Wordpress,至少它适用于我。 但是,当我尝试使用3.1版运行教程的代码时,它给了我同样的错误。 但正如阿维纳什提到的那样

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

应该替换

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

然后它正常工作。 希望它有所帮助。

更新

正如Francisco Corrales在下面评论中正确指出的那样,如果您没有看到更改,您可以考虑停用插件并再次激活它。

导致此错误的一个可能原因是在admin_init action hook上注册管理菜单,而不是admin_menu 这不是这种情况,但分享这些信息是很好的,因为我需要花费数小时来解决这个问题。

所以总是像这样注册你的菜单(并从独特的slug中删除空格或任何其他非字母数字字符 - 函数add_options_page()第4个参数):

原来

add_action('admin_menu', 'your_function');

然后(首先检查函数是否存在)

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

注意__()函数的使用而不是直接放置标题 - 这对于插件的国际化是必要的(如果没有国际化文件,它会显示引用的文本)。

在Wordpress 3.6.1上甚至没有强调工作。 该功能现在应该是:

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

在oscimp_admin()函数中编写importer_admin.php文件代码或使用php file_get_contents函数。

我只是尝试使用basename(_ FILE _)更改add_options_page中的第4个参数; 在您的情况下,与“importer.php”应该是相同的值。 我不确切知道它应该改变什么,但它的工作!

祝好运!

是的,Forth参数是唯一名称,对于任何唯一标识符,它应该包含空格,那就是问题:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM