Добавьте пользовательский идентификатор элемента в зависимости от места размещения виджета, боковой панели или нижнего колонтитула
Я создаю пользовательский виджет и хочу вернуть другой идентификатор элемента. Идентификатор будет примерно таким: 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;
}
Я не хочу использовать динамический идентификатор виджета, а скорее идентификатор, который я выбираю.
Таким образом, если бы виджет был добавлен на зарегистрированную боковую панель, элемент был бы:
<div id='instafeed-sidebar' class='c-widget-instagram'></div>
Если виджет добавлен в нижний колонтитул, элемент было бы:
<div id='instafeed-footer' class='c-widget-instagram'></div>
Спасибо,
1
Author: Ahmad Ajmi, 2018-04-08
1 answers
Решил эту проблему, следуя совету @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>
Спасибо
2
Author: Ahmad Ajmi, 2018-04-09 09:19:02