将引导类添加到最近发布的小工具

时间:2014-06-18 作者:Zach Russell

我正在建立一个基于现有主题的网站,lawyers. 我的任务是使最近发布的小部件看起来像练习区域部分,我需要在列表项上添加一些结构化div(引导“行”)和类,以便小部件输出如下所示:

<div class="row">
    <div class="col-md-12">
        <h3 class="section-title">Recent Posts Widget Title</h3>
    </div>
</div>

<div class="row">
    <ul>
        <li class="col-sm-6 col-md-3"><a href="http://recent-post-name">Recent Post</a></li>
        <li class="col-sm-6 col-md-3"><a href="http://recent-post-name">Recent Post</a></li>
        <li class="col-sm-6 col-md-3"><a href="http://recent-post-name">Recent Post</a></li>
        <li class="col-sm-6 col-md-3"><a href="http://recent-post-name">Recent Post</a></li>
    </ul>
</div>
我假设这可以相对容易地用过滤器完成,我只是不太确定如何完成。

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

不幸的是,这并不像您预期的那么容易,使用过滤器也不能很好地实现。WordPress通常为小部件提供很少的挂钩,更不用说小部件内容了。然而,由于所有小部件都是由类生成的,因此您可以通过创建自己的小部件来扩展WordPress提供的功能,扩展最近发布的小部件。

有关小部件以及如何注册它们的基本信息,请查看the Codex.

对于这种特定情况下的实现,您必须首先创建一个类来扩展最近发布的小部件类(WP_Widget_Recent_Posts):

class MyPlugin_Widget_Recent_Posts_Bootstrap extends WP_Widget_Recent_Posts {

}
由于您希望该小部件与普通的“最近发布”小部件相同,因此不必对updateform 方法,这些方法用于显示小部件设置表单并相应地更新小部件。因此,您不必在类中实现这些方法,只需从WP_Widget_Recent_Posts.

您必须实现的两个方法是构造函数(__construct) 以及小部件显示方法(widget). 在构造器中,只需按照codex中的描述设置小部件设置:

class MyPlugin_Widget_Recent_Posts extends WP_Widget_Recent_Posts {

    public function __construct() {
        WP_Widget::__construct(
            \'myplugin-recent-posts\',
            __( \'My Plugin: Recent Posts\', \'myplugin\' ),
            array(
                \'classname\' => \'myplugin_widget_recent_posts\',
                \'description\' => __( \'My recent posts widget\', \'myplugin\' )
            )
        );
    }

}
接下来,您必须实现display方法,widget. 现在,尽管这听起来(而且是)一个非常“丑陋”的解决方案,但这是你最好的选择:你应该复制display 方法来自WP_Widget_Recent_Posts 并根据您的需要进行更改。除了要添加的类名之外,我建议您做的唯一更改是更改缓存键widget_recent_posts 大概是myplugin_widget_recent_posts.

这需要您编写一些代码,但不幸的是,这是目前最好的解决方案。

结束

相关推荐

customize footer widgets area

我有一个自定义的页脚小部件区域,它在一行中水平显示最多4个小部件。如果我添加了4个以上的小部件,那么布局就会中断,因为我试图在同一行中显示它。我想让它更灵活,例如有2行(div),我可以在第一行中添加let’s 2 widget,在第二行中添加4个widget。可能我需要的是复制这一个,并制作两个页脚区域。这可能吗?如果可能,我如何实现?下面是我的小部件的实际代码。php: /* Footer Widgets */ $footer_widgets_num = wp_get_sidebars_