В настройках виджета вывода постов для WP есть опция для указания меток записи. Переменная для нее назначается так: $tags = $instance['tags']; . В админке выводится так:
<p>
<label for="<?php echo esc_attr($this->get_field_id( 'tags' )); ?>">
<?php _e('Метки:', 'site'); ?>
</label>
<input id="<?php echo esc_attr($this->get_field_id( 'tags' )); ?>" name="<?php echo esc_attr($this->get_field_name( 'tags' )); ?>" value="<?php echo ($instance['tags']); ?>" style="width:100%;" />
</p>
Главное - value="<?php echo ($instance['tags']); ?>". В результате отображается строка для ввода id меток через запятую. В цикле используется такая конструкция для вывода постов:
$site_posts = new WP_Query(array( 'cat' => $categories, 'tag__in' => array($tags), 'posts_per_page' => $number, 'offset' => $paged_offset, 'paged'=>$paged ));
То есть используется 'tag__in' => array($tags), которая выводит записи если они принадлежат хотя бы одной из указанных меток. Почему-то если я в настройках указываю id нескольких меток через запятую, то выводятся посты, принадлежащие только к одной метке, указанной первой. Перепробовал много вариантов, но не работает ни один. Хотелось бы, чтобы выводились посты из всех указанных меток. Можно это сделать?
Если $instance['tags'] - строка c id меток через запятую, то преобразовывать её в массив надо так:
$tags = explode( ',', $instance['tags'] );
и использовать так:
$site_posts = new WP_Query(array( 'cat' => $categories, 'tag__in' => $tags, 'posts_per_page' => $number, 'offset' => $paged_offset, 'paged'=>$paged ));
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости