【问题标题】:Wordpress dynamic sidebar without title没有标题的WordPress动态侧边栏
【发布时间】:2012-02-24 09:58:48
【问题描述】:

我想引入一个动态侧边栏。我在小部件侧边栏中有 1 个文本项,但我不想拉入小部件的标题(只是正文)。谁能告诉我 WordPress 在标题中的位置?

例如目前我...

// In my page template...
<div id='advert-header'>        
   <?php dynamic_sidebar( 'Header Advert' ); ?>
</div>

// In functions.php...
function twentyten_widgets_init() {
    register_sidebar( array(
        'name' => __( 'Header Advert', 'twentyten' ),
        'id' => 'primary-widget-area',
        'description' => __( 'The primary widget area', 'twentyten' ),
        'before_widget' => '',
        'after_widget' => '',
        'before_title' => '',
        'after_title' => '',
    ) );
// etc.
}

【问题讨论】:

    标签: wordpress function wordpress-theming


    【解决方案1】:

    小部件总是对标题名称“widget_title”应用过滤器,使用它。

    add_filter('widget_title','my_widget_title'); 
    function my_widget_title($t)
    {
    
        return null;
    }
    

    谢谢

    -沙克

    【讨论】:

    • 这是正确答案,看看能不能修改接受的答案...
    • 不确定 WordPress 的更高版本是否有所改变,但我将此代码放在 functions.php 中,并且标题字段仍显示在仪表板小部件中。还是这段代码应该做其他事情?
    • @J82 我刚刚用 WordPress 4.9.8 版本测试了这段代码,它按预期完美运行。
    【解决方案2】:

    你可以试试这个(functions.phpregister_sidebar

    'before_title' => '<span class="hidden">',
    'after_title' => '</span>',
    

    和CSS

    .hidden{display:none;}
    

    你也可以试试this

    【讨论】:

    • 嗯,我在我的 WordPress.org 安装中找不到该代码。也许它是一个核心文件?
    • 如果是核心文件,我宁愿不碰它,但感谢您的建议。目前,结论是使用您的 span class='hidden' 建议,我只是想知道是否有更语义化的方式可以控制它。
    • 这是一个肮脏的解决方案,您隐藏了标题,而不是删除它。应应用过滤器以获得干净的 html 代码作为结果。
    • @NelloOllen,你是对的,因为我的头脑很肮脏:-)
    • 我使用了类似的方法,虽然我更喜欢使用 HTML cmets 而不是 CSS 来隐藏标题:'before_title' =&gt; '&lt;!--', 'after_title' =&gt; '--&gt;'。这具有搜索引擎透明的好处。换句话说,标题文本不会被谷歌等计算在内。人。
    【解决方案3】:

    这些标题可能对 CMS 用户有用,所以在你的 register_sidebar 中,你可以放一些东西。就像我在下面的代码中所做的那样(在 Wordpress 5.0.3 中工作)。现在小部件标题在 html 注释中,对我来说似乎没问题

      register_sidebar( array(
        'name'          => esc_html__( 'Contact page widgets', 'xxx' ),
        'id'            => 'sidebar-3',
        'description'   => esc_html__( 'Add widgets here to appear on contact page.', 'xxx' ),
        'before_widget' => '<div id="%1$s" class="widget %2$s">',
        'after_widget'  => '</div>',
        'before_title'  => '<!-- ',
        'after_title'   => ' -->',
    ) );
    

    【讨论】:

      【解决方案4】:

      或者您可以通过在函数中执行此操作来使其更简单:

      'before_title' => '<span style="display: none;">',
      'after_title' => '</span>',
      

      【讨论】:

        【解决方案5】:

        您正在使用的小部件是否有标题字段? 您可以尝试将&amp;nbsp; 放在那里,这样您就可以为标题留出空间。 虽然不是最优雅的解决方案。

        【讨论】:

          【解决方案6】:

          你不能在小部件标题的 css 中做 display: none; 吗?

          【讨论】:

          • 我可以这样做,但我宁愿不出于 SEO 目的打印文本。我确实意识到这将是一个简单的出路:-)
          【解决方案7】:

          请将此代码放在functions.php文件中。

          add_filter( 'widget_title', 'remove_widget_title' );
          function remove_widget_title( $widget_title ) {
              return $widget_title == '&nbsp;' ? '' : $widget_title;
          }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多