我正在创建一个自定义小部件,我想返回一个不同的元素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>
谢谢