向动态侧边栏的包装器添加类

时间:2018-11-09 作者:ManuAlvarado22

我正在制作一个插件来显示站点的特色页面,但它取决于flex容器,我不能保证用户的侧栏会显示flex。

然而,为了解决我的问题,我找到了一个名为dynamic\\u sidebar\\u params的过滤器,它确实允许我更改所需侧栏的类,即包含插件小部件的类。问题是,这不会将CSS类添加到动态提要栏的包装器中。

对于包装器,我指的是侧栏文件中围绕dynamic\\u sidebar()函数的元素。例如:

侧边栏特色页面。php

<?php
if ( ! is_active_sidebar( \'featured-pages\' ) )
{
    return;
} ?>

<section class="featured-pages">
    <?php dynamic_sidebar( \'featured-pages\' ) ?>
</section>
我想做的是在该section元素中修改或添加一个新类,或者在用户的边栏包装器中添加一个新类。

这就是我所尝试的:

<?php
/**
 * @package FeaturedPage
 */

namespace FeaturedPage\\Custom;

class Extras
{
    /**
     * Register default hooks and actions for WordPress
     * @return
     */
    public function register()
    {
        add_filter( \'dynamic_sidebar_params\', [ $this, \'add_sidebar_class\' ] );
    }

    /**
     * Add a new CSS class to the sidebar containing the Featured Page widget(s)
     * @param array $parameters The sidebar parameters array
     * @return array $parameters The sidebar parameters array
     */
    public function add_sidebar_class( $parameters )
    {
        if ( preg_match( \'/featured_page_widget-{0,}/\', $parameters[0][\'widget_id\'] ) )
        {
            $parameters[0][\'class\'] = \'featured-pages-flex-container\';
        }

        return $parameters;
    }
}
这会在侧栏中添加一个类。但是,它不是一个CSS类,而是在注册侧栏时添加的类。但在WordPress documentation it says 关于class参数:“应用于侧栏容器的CSS类”。

如何获取提要栏的包装?在这种情况下,该section元素是否具有一类特色页面?

1 个回复
SO网友:Tim Elsass

如果主题为所有其他核心小部件添加了其他内容和/或设置了侧边栏样式,并且仅与display:block一起使用,或者将其设置为flex-column,您可能会期望flex-row,反之亦然,该怎么办。我建议您在小部件内容中添加一个包装器,如果您的小部件内容依赖于以某种方式设置的包装器,那么您可以防止在主题之间破坏其他小部件的显示或侧边栏的显示。毕竟,不能保证他们甚至会在边栏调用周围设置一个包装器,如上图所示。您也无法控制其他可能尝试执行相同操作的插件,因此您最终会收到不兼容投诉。

或者,如果您认为这确实是针对您的特定情况处理它的最佳方式,您可以尝试使用dynamic_sidebar_beforedynamic_sidebar_after 钩子可以围绕dynamic\\u提要栏调用添加您自己的包装器。

结束

相关推荐

Searchresult sidebar change

那么,searchresult页面侧栏位于哪里?例如,在searchresult页面中,有一个“A”侧栏。但是,我想将其更改为“B”侧栏。我看着search.php 但无法理解侧边栏的来源。