我有以下小部件,用于显示游戏的基本信息:
class Game_Info_Widget extends WP_Widget {
/**
* Register widget with WordPress.
*/
public function __construct() {
parent::__construct(
\'game_info_widget\', // Base ID
\'Game - Info\', // Name
array(\'description\' => __(\'Game - Info\', \'text_domain\'),) // Args
);
}
/**
* Front-end display of widget.
*
* @see WP_Widget::widget()
*
* @param array $args Widget arguments.
* @param array $instance Saved values from database.
*/
public function widget($args, $instance) {
if (!is_singular(\'games\')) {
return;
}
extract($args);
$title = \'Game Info\'; //apply_filters( \'widget_title\', $instance[\'title\'] );
echo $before_widget;
//if ( ! empty( $title ) )
echo $before_title . $title . $after_title;
//echo __( \'Hello, World!\', \'text_domain\' );
$templates = array();
$templates[] = "game-info.php";
// Backward compat code will be removed in a future release
locate_template($templates, true);
echo $after_widget;
}
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
public function update($new_instance, $old_instance) {
$instance = array();
$instance[\'title\'] = strip_tags($new_instance[\'title\']);
return $instance;
}
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
public function form($instance) {
/*
if ( isset( $instance[ \'title\' ] ) ) {
$title = $instance[ \'title\' ];
}
else {
$title = __( \'New title\', \'text_domain\' );
}
*/
?>
This widget only show on Game single page
<?php
/*
?>
<p>
<label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e( \'Title:\' ); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" type="text" value="<?php echo esc_attr( $title ); ?>" />
</p>
<?php
*/
}
}
问题是小部件的标题不可编辑。我该怎么做?
SO网友:Yatendra
Use This
<?php
class Game_Info_Widget extends WP_Widget {
/**
* Register widget with WordPress.
*/
public function __construct() {
parent::__construct(
\'game_info_widget\', // Base ID
\'Game - Info\', // Name
array(\'description\' => __(\'Game - Info\', \'text_domain\'),) // Args
);
}
/**
* Front-end display of widget.
*
* @see WP_Widget::widget()
*
* @param array $args Widget arguments.
* @param array $instance Saved values from database.
*/
public function widget($args, $instance) {
if (!is_singular(\'games\')) {
return;
}
extract($args);
$title = $instance[\'title\'];
//apply_filters( \'widget_title\', $instance[\'title\'] );
echo $before_widget;
if ( ! empty( $title ) )
echo $before_title . $title . $after_title;
//echo __( \'Hello, World!\', \'text_domain\' );
$templates = array();
$templates[] = "game-info.php";
// Backward compat code will be removed in a future release
locate_template($templates, true);
echo $after_widget;
}
/**
* Sanitize widget form values as they are saved.
*
* @see WP_Widget::update()
*
* @param array $new_instance Values just sent to be saved.
* @param array $old_instance Previously saved values from database.
*
* @return array Updated safe values to be saved.
*/
public function update($new_instance, $old_instance) {
$instance = array();
$instance[\'title\'] = strip_tags($new_instance[\'title\']);
return $instance;
}
/**
* Back-end widget form.
*
* @see WP_Widget::form()
*
* @param array $instance Previously saved values from database.
*/
public function form($instance) {
if ( isset( $instance[ \'title\' ] ) ) {
$title = $instance[ \'title\' ];
}
else {
$title = __( \'New title\', \'text_domain\' );
}
?>
<p>
<label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e( \'Title:\' ); ?></label>
<input class="widefat" id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" type="text" value="<?php echo $instance[\'title\']; ?>" />
</p>
<?php
}
}
?>