2010-11-19 48 views
13

我剛開始學習wordpress插件開發,並從管理員訪問我的插件菜單時出現此錯誤。開發插件時出現Wordpress錯誤 - 「您沒有足夠的權限訪問此頁面。」

下面是代碼: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> 

任何一個可以找出我做錯了。

回答

16

問題是第四個參數。 我已經用_刪除了第四個參數的空格,並且它可以工作。

感謝您的幫助......

+0

我很抱歉,我得說:謝謝你! ;) – swdev 2013-05-01 17:00:07

0

在oscimp_admin()函數內寫入您的importer_admin.php文件代碼或使用php file_get_contents函數。

0

我只是試圖在add_options_page中用basename(_ FILE _)更改第4個參數;應該與您的情況下的「importer.php」具有相同的值。我不知道應該改變什麼,但它是有用的!

祝你好運!

6

實際的教程可以找到HERE。它應該適用於Wordpress的2.9.2版本,至少它適用於我。但是,當我嘗試運行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」); 

被替換,然後它工作正常。希望它有助於某個人。

UPDATE

由於正確地通過舊金山科拉萊斯在下面評論說你可以考慮禁用插件&再次激活它,如果你沒有看到的變化。

+0

可怕的教程。這種改變對我來說沒有什麼不同。 – JohnnyBizzle 2011-08-05 13:47:24

+1

請更清楚,我花了5分鐘主演這些臺詞。重要的是補充說明您需要停用插件並將其激活。 – 2014-01-24 16:20:08

+0

感謝Francisco Corrales。在答案中添加了您的評論。順便說一句,我可以知道你爲這個插件使用了哪個WP版本? – enam 2014-01-25 07:36:00

0

是,第四參數是唯一的名稱,對於任何唯一標識符它應該包含的空間,這是個問題:)

1

WordPress的3.6.1甚至沒有突出的工作了。該函數現在應該是:這個錯誤的

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

一個可能的原因是在實際行動admin_init註冊掛鉤,而不是admin_menu管理菜單。這裏不是這種情況,但分享這些信息是很好的,因爲我花了幾個小時才弄清楚了。

所以總是註冊你的菜單是這樣的(和獨特的蛞蝓刪除空格或其他任何非字母數字字符 - 功能add_options_page()的參數):

最初

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

注意使用情況o f __()函數,而不是直接放置標題 - 這是插件國際化的必要條件(如果沒有國際化文件,它會顯示帶引號的文本)。

相關問題