如何为一个WordPress主题开发多个小部件?

时间:2016-11-16 作者:Natascha

我正在为WP开发一个新的主题,我想添加不同种类的小部件和不同的类,因为我希望这些小部件看起来不同(例如,页脚小部件应该有另一种样式,现在我只能用“小部件类”来定位它们,所有的小部件都有一个类)。

function create_widget($name, $id, $description) {

  register_sidebar(array(

\'name\' => __( $name ),

    \'id\' => $id,
    \'description\' => __( $description ),
    \'before_widget\' => \'<div class="widget">\',
    \'after_widget\' => \'</div>\',
    \'before_title\' => \'<h2>\',
    \'after_title\' => \'</h2>\',
  ));

}
这是可能的,还是我必须删除我的类“widgets”,每次都向新的widget添加新的类?

3 个回复
SO网友:Tom J Nowell

注册侧栏时,可以为小部件类使用某些占位符。以下是抄本中的一个示例:

\'before_widget\' => \'<li id="%1$s" class="widget %2$s">\',
这是因为缺少%1$s%2$s 这导致了你的问题。如有疑问,请务必阅读codex和开发者中心/手册上的文档

SO网友:prosti

怎么样

function create_widget($name, $id, $description) {

  register_sidebar(array(

\'name\' => __( $name ),

    \'id\' => $id,
    \'description\' => __( $description ),
    \'before_widget\' => \'<div class="widget widget_\' . $name . \'" >\',
    \'after_widget\' => \'</div>\',
    \'before_title\' => \'<h2>\',
    \'after_title\' => \'</h2>\',
  ));

}
这样你就可以widget 为您的小部件和widget_$name 类,从CSS中使用。或者您可以完全删除widget CSS类,并且在测试时一切看起来都很好。

确保您了解在删除widget 班但这是可能的。

SO网友:farhan Asad

要添加另一个侧栏,只需注册另一个实例。如果您注册了多个,那么您还需要为它们命名。改变你的功能。php文件如下所示。注意添加额外的一行,指定侧栏的名称。一旦定义了这些are函数,您就会注意到额外的侧栏出现在WordPress仪表板的外观>窗口小部件选项下。在这里,您可以将所有小部件拖放到各种侧栏中。

\'提要栏1\',\'before\\u widget\'=>\'\',\'before\\u widget\'=>\'\',\'before\\u title\'=>\'

\',\'before\\u title\'=>\'

\');register\\u提要栏(数组(\'name\'=>\'footer sidebar 1\',\'before\\u widget\'=>\'\',\'before\\u widget\'=>\'\',\'before\\u widget\'=>\'\',\'before\\u title\'=>\'

\',\'before\\u title\',\'after\\u title\'=>\'

\');?>

相关推荐

My widgets do not save

每次我保存我的小部件并离开页面时,我的小部件都会消失。侧边栏已完全清空,不会保存任何更改。控制台或PHP日志中没有任何错误。如果我将小部件直接复制并保存在数据库中widgets_text, 它们将被显示,但我仍然无法在侧边栏中添加或删除任何内容。这只发生在我的右侧边栏上,左侧边栏工作正常,但它们都以相同的方式注册。这是我注册侧边栏的方式:function my_widgets_init() { register_sidebar( array ( \'name\'