2015-10-17 44 views
0

我是学习 WordPress主题开发。我在主题侧栏中添加小部件。我正在使用引导面板来显示小部件内容。将WordPress的小部件应用Bootstrap面板标记问题

我的代码是:

add_action('widgets_init', 'mytheme_widgets_init'); 
function mytheme_widgets_init() { 
    register_sidebar(array(
     'name' => __('Main Sidebar', 'mytheme'), 
     'id' => 'sidebar_main', 
     'description' => __('Sidebar main widget'), 
     'before_widget' => '<div id="%1$s" class="panel panel-primary widget_sidebar_main clearfix %2$s">', 
     'after_widget' => '</div></div>', 
     'before_title' => '<div class="panel-heading"><h3 class="panel-title">', 
     'after_title' => '</h3></div><div class="panel-body">', 
    )); 
} 

它工作正常,当我使用的管理面板中添加窗口小部件的标题和内容。

当我不输入标题,然后它创建一个额外的</DIV>。 而这种情况是无效的HTML。

如何解决这个问题。

回答

0

您可以使用widget_title过滤器来检查是否有或没有标题,并相应地添加标记:

add_action('widgets_init', 'mytheme_widgets_init'); 
function mytheme_widgets_init() { 
    register_sidebar(array(
     'name' => __('Main Sidebar', 'mytheme'), 
     'id' => 'sidebar_main', 
     'description' => __('Sidebar main widget'), 
     'before_widget' => '<div id="%1$s" class="panel panel-primary widget_sidebar_main clearfix %2$s">', 
     'after_widget' => '</div></div>', 
     'before_title' => '', 
     'after_title' => '', 
    )); 
} 

add_filter('widget_title', 'mytheme_widget_title_filter'); 
function mytheme_widget_title_filter($title) { 
    $title = $title ? 
     '<div class="panel-heading"><h3 class="panel-title">'.$title.'</h3></div>' : ''; 
    $title .= '<div class="panel-body">'; 
    return $title; 
} 

更新

如果你想申请以前的过滤器功能只适用于主侧栏,在显示侧边栏之前添加它并立即删除:

<?php 
    add_filter('widget_title', 'mytheme_widget_title_filter'); 
    dynamic_sidebar('sidebar_main'); 
    remove_filter('widget_title', 'mytheme_widget_title_filter'); 
?> 
+0

我也没有使用其他面板部件,所以我认为他们会影响我是否会添加这个过滤器>> register_sidebar(阵列( \t \t \t“名” => __(“热门内容”,“mytheme的”), \t \t \t 'ID'=> 'LEFT_TOP', \t \t \t '描述'=> __( '热门内容插件'), \t \t \t 'before_widget'>“<预留ID = “%1个$ S” '='%2 $ s“>', \t \t \t'after_widget'=>'', \t \t \t 'before_title'=> '', \t \t \t 'after_title'=> '', \t \t)); – Rinku

相关问题