WP不提供任何用于在前端创建和处理表单的助手方法。
要处理前端表单,只需检查$_POST
-ed数据。我建议您在操作中执行此操作,并且仅当小部件处于活动状态时。
在构造函数中-someWidget()方法(应该重命名为__construct
, 和电话parent::__construct
而不是WP_Widget
), 添加:
$my_widget = $this;
// this action gets to run once only
add_action(\'init\', function() use($my_widget){
// give up if there isn\'t an instance active of this widget
if(!is_active_widget(false, false, $my_widget->id_base, true))
return;
// get widget options from all instances
$widget_options = get_option($my_widget->option_name);
// loop trough options of each instance
foreach((array)$widget_options as $instance => &$options){
// identify instance
$id = "{$my_widget->id_base}-{$instance}";
// this instance is not active, so skip it
if(!is_active_widget(false, $id, $my_widget->id_base)) continue;
// here process your form for this specific widget instance
if(isset($_POST["some_field-{$id}"])){
// the $options variable holds the instance options
}
}
// if you need to update the options for all instances...
update_option($my_widget->option_name, $widget_options);
});
在widget()方法中,使用
$this->id
变量获取当前实例的唯一ID,您可以在表单字段名称、ID等中使用该ID。。。