我正在尝试对wordpress小部件进行编码,但小部件功能中的$instance
变量为空,但我不知道原因。
class mi_widget extends WP_Widget {
public function __construct () {
// instrucciones para esta función
parent::__construct(
'mi_widget', // $id_base
'Soy un widget formidable', // $name
array( 'description' => __( 'Widget formidable que hace maravillas', 'mi-widget' ), ) // $widget_options
);
}
public function widget ($args, $instance) {
// instrucciones para esta función
extract($args);
echo $before_widget.$before_title;
echo print_r($instance['mi_campo']);
echo $after_title.$after_widget;
}
public function update ($new_instance, $old_instance) {
// instrucciones para esta función
$instance = array();
$instance['mi_campo'] = strip_tags( $new_instance['mi_campo'] );
return $instance;
}
public function form($instance) {
// instrucciones para esta función
if ( isset( $instance[ 'mi_campo' ] ) ) {
$mi_campo = $instance[ 'mi_campo' ];
}
else {
$mi_campo = __( 'Valor por defecto', 'mi-widget' );
}
?>
<p>
<label for="<?php echo $this->get_field_id( 'mi_campo' ); ?>"><?php _e('Título:', 'mi-widget'); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id( 'mi_campo' ); ?>" name="<?php echo $this->get_field_name ( 'mi_campo' ); ?>" type="text" value="<?php echo esc_attr ($mi_campo); ?>" />
</p>
<?php
}
function get_field_name($field_name) {
return 'widget-' . $this->id_base . '[' . $this->number . '][' . $field_name . ']';
}
function get_field_id($field_name) {
return 'widget-' . $this->id_base . '-' . $this->number . '-' . $field_name;
}
} // Cierra la clase
我在侧边栏之外使用小部件,我在front-page.php
中使用此代码:
<?php the_widget( 'mi_widget' ); ?>
我正在我的functions.php
文件中注册这样的小部件:
function wpb_load_widget() {
register_widget('mi_widget');
register_sidebar(
array(
'name'=>'Home Widgets',
'id'=>'sidebar-1',
'class'=>'custome',
'description'=>'Here you can set the widgets that you want to display in home page.'
)
);
}
add_action( 'widgets_init', 'wpb_load_widget' );
答案 0 :(得分:0)
$ instance。如果您使用the_widget
函数直接调用窗口小部件,则应将$ instance作为第二个参数传递。例如,以下代码:
the_widget('mi_widget', array('mi_campo'=>'blahblah'))
有关页面信息,请参阅此链接:https://codex.wordpress.org/Function_Reference/the_widget
我希望它有所帮助。