我正在尝试创建一个类,以使添加新设置的工作更轻松。我遇到的问题是,尽管我已经跟踪了变量的所有阶段,字符串“manage\\u options”似乎并没有授予admin修改和选项的权利。我不断收到“您没有足够的权限访问此页面。”当我尝试访问新设置页面时。
下面是该类、创建函数及其动作挂钩的一个高度简化的版本。
class optionObject{
var $user_level = \'manage_options\';
function add_page() {
add_options_page(menu_page_title, page_title, $this->user_level, menu_slug, array(&$this, \'do_page\'));
}
function do_page(){
//do stuff to display page
}
}
function test_options(){
$options = new optionObject();
add_action(\'admin_menu\', $options->add_page());
}
add_action(\'admin_init\', \'test_options\' );
未编辑版本
here
SO网友:t31os
简对原始问题的回答和评论都很到位。。
下面是一个代码工作的示例,它是最基本的形式。。。
// Either uncomment the constructor function or the line following the creation of the object, simply showing you two working methods
class test_stuff {
var $user_level = \'manage_options\';
// PHP4 or PHP5 constructor, you choose - uncomment function line as appropriate
//function test_stuff() {
//function __construct() {
// add_action( \'admin_menu\', array( $this, \'add_new_page\' ) );
//}
function add_new_page() {
add_options_page( \'somename\', \'somename\', $this->user_level, \'somepagename\', array( $this, \'display_page\' ) );
}
function display_page() {
echo \'Hello World!\';
}
}
$test_stuff = new test_stuff();
//add_action( \'admin_menu\', array( $test_stuff, \'add_new_page\' ) ); // Alternative to using the constructor function
希望这有助于。。。