将_action添加到另一个Add_action不起作用

时间:2014-03-08 作者:Farzad

我有一段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
}

?>
我该怎么办?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

创建设置页面的首选方法是使用WordPress Settings API.

从您的代码示例来看,删除admin_noticesadmin_menu

您应该尝试将逻辑从customfunc() 回调到从某个早期挂钩激活的另一个回调中,例如admin_init.

此外:

您也在调用新的管理菜单页设置,但用户可能会将其与现有设置页混淆。

其中一个add_menu_page() 不推荐使用的输入参数,请使用前面提到的一些功能here.

因此,请使用以下示例:

add_menu_page( \'My settings\', \'My settings\', \'manage_options\', \'custom\', \'customfunc\' );

结束

相关推荐

测试php文档是由wordpress执行还是直接执行

当您查看页面、帖子、管理页面等时,会自动解释活动插件PHP文件。如果我知道完全限定的URL,我也可以直接运行一个插件PHP,但是它很可能会抛出错误,因为没有包含Wordpress函数。如何测试插件PHP页面是否已通过Wordpress执行?是否有可以安全依赖的全局变量?