Получение всех записей с определенным тегом
Мне нужно получить все записи с определенным тегом, но я получаю все записи вместо этого. Мой запрос работает, если я публикую запись с нужным тегом и вывожу все записи с этим тегом, но когда я публикую запись с другим тегом, запрос возвращает и новую опубликованную запись.
Вот мой запрос:
$original_query = $wp_query;
$wp_query = null;
$args=array(
'posts_per_page' => -1,
'tag' => $post_tag
);
$wp_query = new WP_Query( $args );
$post_titles=array();
$i=0;
if ( have_posts() ) :
while (have_posts()) : the_post();
$post_titles[$i]=get_the_ID() ;
$i++;
endwhile;
endif;
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();

Создать новый WP_Query намного проще, чем пытаться очистить или перезаписать оригинальный запрос.
Если $post_tag - это ярлык метки (slug), вы можете просто использовать:
<?php
$the_query = new WP_Query( 'tag='.$post_tag );
if ( $the_query->have_posts() ) {
echo '<ul>';
while ( $the_query->have_posts() ) {
$the_query->the_post();
echo '<li>' . get_the_title() . '</li>';
}
echo '</ul>';
} else {
// записи не найдены
}
/* Восстановить оригинальные данные поста */
wp_reset_postdata();

да, $post_tag — это ярлык метки, но я не понял, в чем разница в вашем коде, извините, я новичок в WordPress

Основное отличие в том, что ваш код пытается обнулить основной WP Query, вместо того чтобы просто создать новый.

Я получаю "записи не найдены", извините, но есть ли разница между меткой (tag) и ярлыком метки (tag slug)?

В ваш файл functions.php
/* Отображение связанных товаров */
/* ============================ */
if ( ! function_exists( 'display_related_products' ) ) {
function display_related_products($post_tag) {
?>
<div class="related-products">
<!-- Простой WP_Query -->
<?php
$args = array(
'post_type' => 'product',
'tag' => $post_tag, // Здесь происходит фильтрация по нужному тегу
'orderby' => 'id',
'order' => 'ASC'
);
$related_products = new WP_Query( $args );
?>
<?php while ( $related_products -> have_posts() ) : $related_products -> the_post(); ?>
<a href="<?php the_permalink(); ?>" class="related-product">
<?php if( has_post_thumbnail() ) : ?>
<?php the_post_thumbnail( 'full', array( 'class' => 'related-product-img', 'alt' => get_the_title() ) ); ?>
<?php endif; ?>
</a>
<?php endwhile; wp_reset_query(); ?>
</div>
<?php
}
}
Вызов из любого места с помощью
display_related_products('название-тега');
