我正在创建一个自定义小部件,我想返回一个不同的元素ID,instafeed-sidebar 和instafeed-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>
 谢谢你,
 
                    最合适的回答,由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>
 谢谢