**我对我的英语感到抱歉。
我是wordpress的新手。我尝试创建一个小部件,用于从youtube或其他视频宿主嵌入视频。后端一切都很顺利(Wordpress管理员)。
这是打印屏幕>>http://i.imgur.com/jfedV4R.gif
当我在侧边栏中发布小部件时,小部件不会显示任何内容。但在我的后台工作很好。
这是我的小部件代码:
<?php
/**
* Today Video Widget Class
*
*/
class Today_video extends WP_Widget {
/**
* Widget setup.
*/
function Today_video () {
/* Widget settings. */
$widget_ops = array( \'classname\' => \'tm_widget_today_video\', \'description\' => __(\'Display today video on your site\', \'today_video\') );
/* Widget control settings. */
$control_ops = array( \'width\' => 300, \'height\' => 350, \'id_base\' => \'today_video\' );
/* Create the widget. */
$this->WP_Widget( \'today_video\' , __( \'Today Video\' , \'today_video\' ), $widget_ops, $control_ops );
}
/**
* The frontend function
*/
function widget( $args, $instance ) {
extract( $args );
/* Our variables from the widget settings. */
if(isset($instance))
{
if( isset( $instance[ \'title\' ] ) ) {
$title = apply_filters( \'widget_title\', $instance[ \'title\' ] );
}
if( isset( $instance[ \'template\' ] ) ) {
$template = htmlspecialchars_decode( $instance[ \'template\' ] );
}
}
}
/**
* Backend widget settings
*/
function update( $new_instance, $old_instance ) {
$instance = $old_instance;
/* Strip tags for title and name to remove HTML (important for text inputs). */
$instance[\'title\'] = strip_tags( $new_instance[\'title\'] );
// htmlspecialchars to save html markup in database, at frontend we use htmlspecialchars_decode
$instance[\'template\'] = htmlspecialchars($new_instance[\'template\']);
return $instance;
}
/**
* Displays the widget settings controls on the widget panel.
*
* Backend widget options form
*/
function form( $instance ) {
$defaults = array(
\'title\' => __( \'Today Video\', \'today_video\'),
\'template\' => __(\'<iframe width="200" height="150" src="http://www.youtube.com/embed/tv49TbW5rEg" frameborder="0" allowfullscreen></iframe>\', \'today_video\'),
);
$instance = wp_parse_args( (array) $instance, $defaults ); ?>
<p>
<label for="<?php echo $this->get_field_id( \'title\' ); ?>"><?php _e(\'Title:\', \'hybrid\'); ?></label>
<input id="<?php echo $this->get_field_id( \'title\' ); ?>" name="<?php echo $this->get_field_name( \'title\' ); ?>" value="<?php echo $instance[\'title\']; ?>" style="width:96%;float:right;" />
</p>
<p>
<textarea id="<?php echo $this->get_field_id( \'template\' ); ?>" name="<?php echo $this->get_field_name( \'template\' ); ?>" style="width:100%;height:100px;"><?php echo $instance[\'template\']; ?></textarea>
</p>
<?php
}
} //Add function to widgets_init that\'ll load today_video
add_action( \'widgets_init\', create_function( \'\', \'register_widget( "Today_video" );\' ) );
?>
有人能帮帮我吗!
最合适的回答,由SO网友:s_ha_dum 整理而成
你的widget
方法不响应任何内容。如果希望显示内容,小部件需要回显内容。
function widget( $args, $instance ) {
extract( $args );
/* Our variables from the widget settings. */
if(isset($instance))
{
if( isset( $instance[ \'title\' ] ) ) {
$title = apply_filters( \'widget_title\', $instance[ \'title\' ] );
// try this
echo $title;
}
if( isset( $instance[ \'template\' ] ) ) {
$template = htmlspecialchars_decode( $instance[ \'template\' ] );
// try this
echo $template;
}
}
}
这可能不是您想要的格式,但它应该显示您的内容。请注意,小部件支持多个参数,例如
$before_title
和
after_title
. 虽然您不必使用这些,但这通常是一个好主意。
参考文献
http://codex.wordpress.org/Widgets_API