如何在前台展示Widget?

时间:2013-06-09 作者:v123shine

**我对我的英语感到抱歉。

我是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" );\' ) );
?>
有人能帮帮我吗!

1 个回复
最合适的回答,由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_titleafter_title. 虽然您不必使用这些,但这通常是一个好主意。

参考文献

http://codex.wordpress.org/Widgets_API

结束

相关推荐

Using tabs in admin widgets

更新:我应该指出,我在插件/主题选项页面上测试了下面的方法,效果非常好。事实上,我还能够包括jQuery cookie插件,以保留页面加载之间的当前选项卡选择(很好!)。当您有多个小部件选项时,尝试向管理小部件添加选项卡以减少表单占用空间。我正在使用WordPress附带的jQuery UI选项卡。以下是我迄今为止在插件中编写的代码。http://pastebin.com/fe4wdBcp当小部件被拖动到小部件区域时,选项卡似乎呈现为OK,但您无法单击查看第二个选项卡。更糟糕的是,如果刷新窗口小部件页面,