我创建了一个名为“信息小部件”的小部件,它有一个字段,这里是小部件的代码:
<?php
add_action('widgets_init','info_init');
//register my widget
function info_init()
{
register_widget("info_widget");
}
// widget class
class info_widget extends WP_widget
{
// Widget Settings
function info_widget()
{
$option = array
(
"classname" => "style1",
"description" => "widget information"
);
$this->WP_widget("info-widget","widget d'information",$option);
}
// display the widget
function widget($args,$instance)
{
extract($args);
echo $before_widget;
echo $before_title.$instance["name"].$after_title;
echo $after_widget;
}
//the form for the widget options
function form($instance)
{
$def = array
(
"name" =>"Enter your name"
);
$instance = WP_parse_args($instance,$def);
echo '<p><label for="'.$this->get_field_id("name").'">name :</label>
<input value="'.$instance["name"].'" type="text" name="'.$this->get_field_name("name").'" id="'.$this->get_field_id("name").'">
</p>';
}
// update the widget
function update($new,$old)
{
return $new;
}
}
在“小部件”菜单中,当我将小部件滑动到侧边栏时,小部件的字段会自动获得一个 ID,每次我再次滑动我的小部件时,该字段都会采用一个新的 ID(ID 递增)
对我来说,我创建了一个元框,并且我的小部件与他的字段一起放在了元框中。元框代码:
<?php
add_action('add_meta_boxes','dar_meta_create');
function dar_meta_create()
{
add_meta_box(
'dar_meta', // $id
'metabox dardar', // $title
'dar_meta_function', // $callback
'page', // $page
'advanced', // $context
'high');
}
// callback
function dar_meta_function($post)
{
wp_nonce_field(basename(__FILE__), 'dar_nonce');
//Display My widget
global $wp_widget_factory;
$widget = new info_widget(); // create my widget
$widget->id = 'temp';
$widget->number = '2'; // give an ID automatically ?????
ob_start();
$widget->form(array());
$form = ob_get_clean();
// Convert the widget field naming into ones that panels uses
$exp = preg_quote($widget->get_field_name('____'));
$exp = str_replace('____', '(.*?)', $exp);
$form = preg_replace('/'.$exp.'/', "2", $form);
$widget->form = $form;
var_dump($widget->form);
}
}
// save meta box
function dar_meta_save($id,$post)
{
// check the autosave
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE)
return $id;
//Save My Widget here ???
}
add_action('save_post','dar_meta_save',1,2);
在“添加新页面”菜单中,我的元框的输出是:
string '<p><label for="widget-info-widget-2-name">Nom :</label>
<input value="Enter your name" type="text"
name="widgets[2][name]" id="widget-info-widget-2-nom"> </p>'
(length=164)
但我手动提供了 ID( ID = 2)
如何自动为小部件的每个字段提供一个 ID 并保存它,以便我可以在页面中显示它?有人有想法吗?
我希望我不要问很多问题:)谢谢。