Поиск по произвольному типу сообщения и таксономии с определенным тегом

У меня есть два настраиваемых типа сообщений: продукт и часто задаваемые вопросы. Тип публикации продукта имеет таксономию product_tag. Итак, теперь я хочу искать текст «еда» как в блоге, так и в часто задаваемых вопросах, а также в тех продуктах, которые помечены как «еда».

Это аргументы для запроса:

$args = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'product_tag',
            'field' => 'slug',
            'terms' => 'food'
        )
    ),
    'post_type' => array('post', 'faq', 'product'),
    'posts_per_page' => 6,
    's' => 'food',
    'paged' => $paged
);

Но я не получаю никакого результата. Если я удалю из кода массив tax_query, я получаю результаты, но отображаются не все продукты, содержащие в качестве тегов food. Он просто ищет в них текст.

Итак, какая модификация должна быть необходима, чтобы я получал здесь соответствующие сообщения?


person Smart Bytes    schedule 07.10.2012    source источник


Ответы (1)


Для всех, кому интересно, вот как я это решил:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;

$args1 = array(
    'post_type' => array('post', 'faq'),
    'posts_per_page' => 6,
    's' => $problem,
    'paged' => $paged
);

$args2 = array(
    'tax_query' => array(
        array(
            'taxonomy' => 'product_tag',
            'field' => 'slug',
            'terms' => $problem
        )
    ),
    'post_type' => 'product',
    'posts_per_page' => 6,
    'paged' => $paged
);

$articleposts = get_posts( $args1 );
$productposts = get_posts( $args2 );

$mergedposts = array_merge( $articleposts, $productposts );

foreach( $mergedposts as $singlepost ) : setup_postdata( $singlepost );
?>
<h2><a href="<?php echo get_permalink( $singlepost->ID ); ?>"><?php echo $singlepost->post_title; ?></a></h2>
<?php endforeach; ?>
person Smart Bytes    schedule 08.10.2012