我有一段wordpress的php代码。它不起作用。我想在另一个add\\u操作下执行一个add\\u操作。但下的add\\u操作不起作用!
function no_reminder() {
echo "no_reminder function is active";
add_action(\'admin_menu\',\'no_reminder\');
remove_action( \'admin_notices\', \'update_nag\', 3 );
}
add_action(\'admin_menu\', \'custom\');
function custom() {
add_menu_page(\'settings\', \'settings\', \'8\', \'custom\', \'customfunc\');
}
function customfunc(){
$wpp_rg = get_option(\'wpp_rg\');
if ($_POST[\'wpp_submit\']):
update_option(\'wpp_rg\',$_POST[\'wpp_rg\']);
endif;
$farzad = get_option(\'wpp_rg\');
/******************** IF1 ***********************/
if ($farzad==1) {
do_action(\'no_reminder\');
no_reminder();
echo "If active";
}
if ($farzad==2) {
echo "IF Not Active";
}
/******************** IF1 ***********************/
?>
<div class="wrap">
<form action="" method="post">
<table width="50%" border="0" cellspacing="5" cellpadding="5">
<tr>
<th scope="row">test mode :</th>
<td><p>
<label>
<input name="wpp_rg" type="radio" value="1" id="RadioGroup1_0" <?php echo ($farzad==1 ? \'checked="checked"\' : \'\') ?> />
active</label>
<br />
<label>
<input name="wpp_rg" type="radio" value="2" id="RadioGroup1_1" <?php echo ($farzad==2 ? \'checked="checked"\' : \'\') ?>/>
not active</label>
<br />
</p></td>
</tr>
<tr>
<th></th>
<td><input type="submit" name="wpp_submit" value="save" class="button" /></td>
</tr>
</table>
</form>
</div>
<?php
}
?>
我该怎么办?
最合适的回答,由SO网友:birgire 整理而成
创建设置页面的首选方法是使用WordPress Settings API.
从您的代码示例来看,删除admin_notices
在admin_menu
钩
您应该尝试将逻辑从customfunc()
回调到从某个早期挂钩激活的另一个回调中,例如admin_init
.
此外:
您也在调用新的管理菜单页设置,但用户可能会将其与现有设置页混淆。
其中一个add_menu_page()
不推荐使用的输入参数,请使用前面提到的一些功能here.
因此,请使用以下示例:
add_menu_page( \'My settings\', \'My settings\', \'manage_options\', \'custom\', \'customfunc\' );