自定义存档和类别小部件的输出,而不更改小部件的原始行为

时间:2018-04-14 作者:The WP Intermediate

当前未修改的输出如下所示→

<div id="archives-4" class="widget widget_archive">
    <h2 class="h2b">Archives</h2>       
    <ul>
        <li><a href="http://........./2017/11/">November 2017</a>&nbsp;(3)</li>
        <li><a href="http://........./2017/10/">October 2017</a>&nbsp;(9)</li>
        <li><a href="http://........./2017/09/">September 2017</a>&nbsp;(6)</li>
        <li><a href="http://........./2017/05/">May 2017</a>&nbsp;(7)</li>
        <li><a href="http://........./2017/04/">April 2017</a>&nbsp;(1)</li>
        <li><a href="http://........./2017/03/">March 2017</a>&nbsp;(5)</li>
        <li><a href="http://........./2017/02/">February 2017</a>&nbsp;(8)</li>
        <li><a href="http://........./2017/01/">January 2017</a>&nbsp;(1)</li>
    </ul>
</div>
但我最终还是要这样→

<div id="archives-4" class="widget widget_archive newinjected_class1">
    <h2 class="h2b">Archives</h2>       
    <ul class="newinjected_class2">
        <li><a href="http://........./2017/11/">November 2017</a>&nbsp;(3)</li>
        <li><a href="http://........./2017/10/">October 2017</a>&nbsp;(9)</li>
        <li><a href="http://........./2017/09/">September 2017</a>&nbsp;(6)</li>
        <li><a href="http://........./2017/05/">May 2017</a>&nbsp;(7)</li>
        <li><a href="http://........./2017/04/">April 2017</a>&nbsp;(1)</li>
        <li><a href="http://........./2017/03/">March 2017</a>&nbsp;(5)</li>
        <li><a href="http://........./2017/02/">February 2017</a>&nbsp;(8)</li>
        <li><a href="http://........./2017/01/">January 2017</a>&nbsp;(1)</li>
    </ul>
</div>
您是否了解新的两个课程:

newinjected_class1
newinjected_class2
我们是否可以通过一些过滤器来实现这一点,以便只修改输出而不改变小部件的正常行为?

1 个回复
SO网友:Mat

不,没有用于执行此操作的筛选器。为了实现这一点,您需要创建自己版本的小部件。

您可以在以下文件夹中找到默认WordPress小部件:/wp-includes/widgets 在WordPress安装中。

只需从相应的小部件中复制代码。主题或插件中的php文件:

class-wp-widget-archives.php

class-wp-widget-categories.php

然后根据您的喜好编辑小部件代码。

最后,您需要使用register_widget() 功能符合WordPress Codex页面-https://codex.wordpress.org/Function_Reference/register_widget. 应该是这样的:

function myplugin_register_widgets() {
    register_widget( \'CustomArchiveWidget\' );
    register_widget( \'CustomCategoriesWidget\' );
}

add_action( \'widgets_init\', \'myplugin_register_widgets\' );

结束