无法在WordPress中查看新添加的内容

时间:2013-05-30 11:56:32

标签: php wordpress plugins

我在WordPress中收到以下错误消息。

You do not have sufficient permissions to access this page.

我是WordPress的新手,我正在学习如何开发WP插件的教程。

基本上,我在管理菜单中加载了一个插件并将其激活。

此代码包含在 init.php 文件中。

    function oscimp_admin() {
                include('oscommerce_import_admin.php');
            }
            //when the menu is click 4th parameter  will be trugger
            function oscimp_admin_actions() {
                add_options_page("OSCommerce Product Display", "Menuka  Product Display", 1, "OSCommerce Product Display", "oscimp_admin");
            }

            add_action('admin_menu', 'oscimp_admin_actions');

    I have included following code in oscommerce_import_admin.php file
   <?php 
    if($_POST['oscimp_hidden'] == 'Y') {
        //Form data sent
        $dbhost = $_POST['oscimp_dbhost'];
        update_option('oscimp_dbhost', $dbhost);

        $dbname = $_POST['oscimp_dbname'];
        update_option('oscimp_dbname', $dbname);

        $dbuser = $_POST['oscimp_dbuser'];
        update_option('oscimp_dbuser', $dbuser);

        $dbpwd = $_POST['oscimp_dbpwd'];
        update_option('oscimp_dbpwd', $dbpwd);

        $prod_img_folder = $_POST['oscimp_prod_img_folder'];
        update_option('oscimp_prod_img_folder', $prod_img_folder);

        $store_url = $_POST['oscimp_store_url'];
        update_option('oscimp_store_url', $store_url);
        ?>
        <div class="updated"><p><strong><?php _e('Options saved.' ); ?></strong></p></div>
        <?php
    } else {
        //Normal page display
        $dbhost = get_option('oscimp_dbhost');
        $dbname = get_option('oscimp_dbname');
        $dbuser = get_option('oscimp_dbuser');
        $dbpwd = get_option('oscimp_dbpwd');
        $prod_img_folder = get_option('oscimp_prod_img_folder');
        $store_url = get_option('oscimp_store_url');
    }


?>      

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

当我进入管理菜单链接时,我得到上面提到的错误。有什么线索可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

我猜你对add_options_page的调用会在设置下添加一个新选项,但问题是当你点击它时。

如果您检查official documentation,您可以看到第4个参数名为menu_slug,并且它被添加到URL中(在本例中为get-options-general.php)。所以第一件事就是将其更改为更“友好”的内容。例如,尝试将“OSCommerce产品展示”切换为“oscommerce-product-display”

此外,第3个参数称为功能,它必须是表示用户必须能够执行的操作的字符串。如果您只想让管理员访问此选项,您可以使用'install_plugins'(例如)而不是1.您可以在此处查看完整的角色和功能列表:http://codex.wordpress.org/Roles_and_Capabilities#Capability_vs._Role_Table

所以添加菜单选项的行应该变成类似

的行
add_options_page("OSCommerce Product Display", "Menuka  Product Display", 'install_plugins', "oscommerce-product-display", "oscimp_admin");

从那时起,您只需要确保oscimp_admin是一个有效的回调(一个呈现您需要的页面的函数)。