根据小部件位置、边栏或页脚添加自定义元素ID

时间:2018-04-08 作者:Ahmad Ajmi

我正在创建一个自定义小部件,我想返回一个不同的元素ID,instafeed-sidebarinstafeed-footer. 这取决于小部件添加的位置。

注册侧栏:

register_sidebar( array(
    \'name\'          => esc_html__( \'Post Sidebar\', \'nubia\' ),
    \'id\'            => \'post-sidebar\',
    \'description\'   => esc_html__( \'\', \'nubia\' ),
    \'before_widget\' => \'<section id="%1$s" class="c-widget c-widget--sidebar %2$s">\',
    \'after_widget\'  => \'</section>\',
    \'before_title\'  => \'<h5 class="c-widget--sidebar__title">\',
    \'after_title\'   => \'</h5>\',
  ) );

  register_sidebar( array(
    \'name\'          => esc_html__( \'Footer First\', \'nubia\' ),
    \'id\'            => \'footer-first\',
    \'description\'   => esc_html__( \'\', \'nubia\' ),
    \'before_widget\' => \'<section id="%1$s" class="c-widget c-widget--footer %2$s">\',
    \'after_widget\'  => \'</section>\',
    \'before_title\'  => \'<h5 class="c-widget--footer__title">\',
    \'after_title\'   => \'</h5>\',
  ) );
小部件代码:

public function widget( $args, $instance ) {
  extract($args);

  // ...

  <div id=\'instafeed\' class=\'c-widget-instagram\'></div>

  <?php

  echo $after_widget;
}
我不想使用widget动态ID,而是我选择的一个ID。

因此,如果将小部件添加到已注册的侧栏中,元素将是:

<div id=\'instafeed-sidebar\' class=\'c-widget-instagram\'></div>
如果将小部件添加到页脚,则元素将是:

<div id=\'instafeed-footer\' class=\'c-widget-instagram\'></div>
谢谢你,

1 个回复
最合适的回答,由SO网友:Ahmad Ajmi 整理而成

按照@mmm的建议解决了这个问题。使用$args["id"] 成功了。

使用$args["id"] 将返回以下内容:

post-sidebar

footer-first

稍作修改后,我的最终代码是:

public function widget( $args, $instance ) {
  extract($args);

  // ...

  <div id=\'instafeed-<?php echo explode("-", $args["id"])[0] ;?>\' class=\'c-widget-instagram\'></div>

  <?php

  echo $after_widget;
}
结果是:

<div id=\'instafeed-post\' class=\'c-widget-instagram\'></div>
<div id=\'instafeed-footer\' class=\'c-widget-instagram\'></div>
谢谢

结束

相关推荐

Adding Multiple Sidebars

大家好,我想向我的wordpress站点添加多个侧栏。我目前在函数中注册了两个侧栏。php类似:function themename_widgets_init() { register_sidebar( array( \'name\' => __( \'Sidebar\', \'themename\' ), \'id\' => \'sidebar-1\', \'des