正在构建插件,并在插件页面上方显示

时间:2013-10-25 作者:TechLifeForgotten

这就是问题所在:

add_action(\'admin_menu\', \'bittech_login_settings\');



function bittech_login_settings() {



add_menu_page(\'BitTech Login Settings\', 
              \'BitTech Login Settings\', 
              \'administrator\', 
              \'bittech_settings\', 
              \'bittech_login_settings\');

$filename = "../wp-content/plugins/bittech_login/include/config.php";

$contents = file_get_contents($filename);

if (isset($_POST[\'field\'])) {
   file_put_contents($filename, $_POST[\'field\']);
}
?>

<form action="" method="POST">
    <textarea name="field" cols="300" rows="200"><?php 
    echo $contents; 
    ?></textarea><br>
    <input type="submit" value="Save">
</form>
<?php
}
?>
代码工作正常,但当它被放入时,它会出现在插件面板上方。我想知道这是怎么解决的。这样我以后就不会有这个问题了。我想补充一点,我对制作插件非常陌生,因此我有这个问题。

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

您正在使用add_menu_page 错误的功能bittech_login_settings 应仅为:

function bittech_login_settings() {
    add_menu_page(
        \'BitTech Login Settings\', 
        \'BitTech Login Settings\', 
        \'add_users\', 
        \'bittech_settings\', 
        \'bittech_login_settings_callback\'
    );
}

function bittech_login_settings_callback() {
    // content of the menu
}
并将页面内容放入回调函数中bittech_login_settings_callback. 此外,这些台词没有多大意义:

$filename = "../wp-content/plugins/bittech_login/include/config.php";
$contents = file_get_contents($filename);
if($_POST) file_put_contents($filename, $_POST[\'field\']);
您可能应该将该字段存储在数据库中update_option 并用get_option().

SO网友:Chip Bennett

这个Codex provides guidance for determining which add_*_page() call to use 对于给定菜单项。

您正在使用add_menu_page(), 其中添加了top-level menu. 您可以尝试使用更合适的子菜单;可能是以下三种情况之一:

有关其他选项,请参阅上面链接的食品法典条目。

结束

相关推荐

Security and Must Use Plugins

从codex article 必须使用插件:只需将文件上载到mu插件目录即可启用,无需登录我觉得这是一个潜在的安全问题。在站点上运行插件中的任何代码之前,必须通过管理面板激活常规插件。我一直认为这是一个明智的安全预防措施,因为攻击者如果能够以某种方式将文件上载到plugins文件夹,则在运行代码之前,还必须访问和修改数据库。这个mu-plugins 文件夹似乎提供了一种简单的方法来避免这种情况。我知道WordPress开发人员比我更了解安全性,所以我想知道是否有人能解释为什么这不是一个安全漏洞。