Shortcode into widget

时间:2015-03-03 作者:Steve Kim

我有一个特殊的短代码“[示例]”

我知道我可以把它放在一个文本小部件中使其工作。

但我想知道如何将其转换为一个名为“示例”的小部件

有什么建议吗?

非常感谢。

1 个回复
最合适的回答,由SO网友:Shazzad 整理而成

只需创建一个新的小部件&;注册它-

/* Create a new Widget */
class WPSE180059_Widget extends WP_Widget 
{
    public function __construct()
    {
        $widget_ops = array(
            \'classname\' => \'widget_wpse180059\', 
            \'description\' => __( \'A Custom Widget\') 
        );
        parent::__construct(\'wpse180059\', __(\'WPSE180059 Widget\'), $widget_ops);
    }

    public function widget( $args, $instance )
    {
        $title = apply_filters( 
            \'widget_title\', 
             empty($instance[\'title\']) ? \'\' : $instance[\'title\'], 
             $instance, 
             $this->id_base 
        );

        echo $args[\'before_widget\'];

        if ( $title )
        { echo $args[\'before_title\'] . $title . $args[\'after_title\']; }

        /* here goes your Shortcode */
        echo do_shortcode(\'[example]\');

        echo $args[\'after_widget\'];
    }

    public function update( $new_instance, $old_instance )
    {
        $instance[\'title\'] = strip_tags($new_instance[\'title\']);
        return $instance;
    }

    public function form( $instance )
    {
        //Defaults
        $title = esc_attr( $instance[\'title\'] ); ?>
        <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 $title; ?>" /></p>
<?php
    }
}

/* Register your Widget */
function WPSE180059_init() {
    register_widget(\'WPSE180059_Widget\');
}
add_action(\'widgets_init\', \'WPSE180059_init\');

结束

相关推荐

widgets in contacts only

我的顶部菜单中列出了几页。这些是:联系人、我的帐户和消息。我在admin的“Pages Sidebar”选项卡中添加了一个地图。但它似乎将地图添加到上面列出的所有3个页面中,但我只希望它出现在联系人页面上,而不是其他2个页面上,因为在其他2个页面中,我希望看到其他内容(可能是针对会员的广告)。我该怎么做?谢谢你的帮助。