source

플러그인 개발 중 Wordpress 오류 - "이 페이지에 액세스할 수 있는 충분한 권한이 없습니다."

manycodes 2023. 4. 1. 09:39
반응형

플러그인 개발 중 Wordpress 오류 - "이 페이지에 액세스할 수 있는 충분한 권한이 없습니다."

워드프레스 플러그인 개발을 막 배우기 시작했는데 관리자로부터 플러그인 메뉴에 접속했을 때 이 오류가 발생하였습니다.

여기 코드가 있습니다: 수입업자.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');

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

누구라도 내가 뭘 잘못하고 있는지 알 수 있다.

문제는 네 번째 파라미터입니다.4번째 파라미터에서 _로 공백이 삭제되어 동작합니다.

도와주셔서 감사합니다...

실제 튜토리얼은 여기에서 찾을 수 있습니다.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”);

정상적으로 동작합니다.도움이 됐으면 좋겠네요

갱신:

Francisco Corrales가 아래 코멘트에서 올바르게 기술한 바와 같이, 변경이 보이지 않으면 플러그인을 비활성화하고 다시 활성화하는 것을 고려할 수 있습니다.

이 오류의 원인 중 하나는 실제로 관리 메뉴를 등록하는 것입니다.admin_init액션 훅, 대신admin_menu여기에서는 그렇지 않지만, 이 정보를 공유하는 것은 좋은 일입니다.그걸 알아내는 데 몇 시간이 걸렸기 때문입니다.

따라서 항상 다음과 같이 메뉴를 등록하십시오(그리고 함수의 네 번째 매개 변수인 고유한 slug에서 공백 또는 기타 영숫자가 아닌 문자를 삭제하십시오).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');
    }
}

의 사용법에 주의해 주세요.__()이 기능은 제목을 직접 배치하지 않고 플러그인의 국제화에 필요합니다(국제화 파일이 없는 경우 따옴표로 둘러싸인 텍스트를 표시합니다).

Wordpress 3.6.1에서는 더 이상 밑줄도 표시되지 않습니다.이 기능은 다음과 같습니다.

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

importer_admin 이라고 적습니다.oscimp_admin() 함수 내의 php 파일 코드 또는 php file_get_disc 함수를 사용합니다.

add_options_page의 네 번째 파라미터를 basename(_FILE_;)으로 변경하려고 했습니다.이 경우 "importer.php"와 같은 값이어야 합니다.정확히 뭘로 바꿔야 할지는 모르겠지만, 일이잖아!

행운을 빕니다.

네, Fourth 파라미터는 Unique name 입니다.Unique ID에는 공백이 포함되어 있어야 합니다.그것이 문제입니다.

언급URL : https://stackoverflow.com/questions/4224084/wordpress-error-while-developing-a-plugin-you-do-not-have-sufficient-permissio

반응형