플러그인 개발 중 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
'source' 카테고리의 다른 글
MongoDB {aggregation $match} 대 {find} 속도 (0) | 2023.04.01 |
---|---|
모바일에서 리액트 앱 미리보기를 만드는 방법 (0) | 2023.04.01 |
Gravity Forms 사용자 지정 유효성 검사 필터 (0) | 2023.04.01 |
Jquery/Ajax 양식 제출(enctpe="formart/form-data")왜 '콘텐츠'는유형:False' 원인 정의되지 않은 인덱스가 PHP에 있습니까? (0) | 2023.04.01 |
'react'에서 반응하는 import *와 'react'에서 반응하는 import react의 차이점은 무엇입니까? (0) | 2023.04.01 |