UPDATE_OPTION创建一个选项,该选项在重新加载博客时清空

时间:2011-11-01 作者:Rhys Wynne

我目前正在编写一个插件,允许在一个页面上列出所有作者。我创建了一个选项页面,并希望创建一个功能,允许管理员从页面中排除某些作者。

“选项”页面是以作者ID为值的复选框列表。提交表单时,复选框作为数组传递给处理函数(如下所示),该函数组合所有值,并使用“update\\u option()”将值插入数据库。

function wp_applugin_options_process() { 

  $arr = $_POST["excludeid"];
  $excludeid = implode(" ",$arr);
  $excludeid = esc_html( $excludeid);

  update_option("wp_applugin_excludeids", $excludeid );

}
默认情况下,“update\\u option”创建该选项,但将其保留为空。但是,如果我破坏插件,将行“echo get\\u option(“wp\\u applugin\\u excludeids”)放在“update\\u option”行之后,它不仅会回显正确的值,而且还会将值加载到数据库中。如果转到未运行wp\\u applugin\\u options\\u进程的页面,则会删除选项“wp\\u applugin\\u excludeids”。

有什么想法吗?

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

你在哪里打电话wp_applugin_options_process()?

如果你叫它$_POST["excludeid"] 如果未设置,则实际上是在呼叫:

update_option("wp_applugin_excludeids", null );
因此,如果您在每次加载页面时调用此函数,甚至在加载管理页面时调用此函数,那么您将自动删除您的选项。在对函数执行任何操作之前,应在函数中进行检查,以确保已设置变量:

function wp_applugin_options_process() { 
    if(!isset($_POST["excludeid"])) return;

    $arr = $_POST["excludeid"];
    $excludeid = implode(" ",$arr);
    $excludeid = esc_html( $excludeid);

    update_option("wp_applugin_excludeids", $excludeid );

}

结束