2016-09-21 3 views
1

У меня есть тема WP, которая использует свою собственную форму поиска. Как вы можете видеть в приведенном ниже коде, он уже настроен на поиск в пределах категории, когда форма поиска отображается в этой категории.WordPress Limit Search to Category of Current Post

Я также установил форму поиска для отображения выше отдельных сообщений, но когда я ищу в этой форме, я получаю результаты из всех категорий. Я хочу, чтобы поисковая форма выполнялась только в пределах категории этого сообщения.

Я искал везде, но не могу найти решение. Заранее спасибо!

<form role="search" method="get" class="search-form" action="<?php echo esc_url(home_url('/')); ?>"> 
<?php // Check to see if category, if yes, then modify the search parameters ?> 
<?php if (is_category()) : ?> 
<input type="hidden" name="cat" value="<?php echo esc_attr(get_query_var('cat')); ?>" /> 
<?php $stext = esc_attr(sprintf(__('Search Knowledgebase for %s&hellip;', 'ipt_kb'), single_cat_title('', false))); ?> 
<?php endif; ?> 
<div class="form-group"> 
    <div class="input-group input-group-lg"> 
     <input type="search" class="search-field form-control" placeholder="<?php echo $stext; ?>" value="<?php echo esc_attr(get_search_query()); ?>" name="s" /> 
     <span class="input-group-btn"><button type="submit" class="btn btn-default"><span class="ipt-icon-search"></span></button></span> 
    </div> 
</div> 

+0

просто заменить ' 'с идентификатором категории – Noman

+0

спасибо за ответ, но у меня есть 30 категорий, и мне нужно иметь возможность искать по каждой категории отдельно, поэтому мне действительно нужно, чтобы узнать, к какой категории относится текущий пост и искать в этой категории. Если я просто добавлю идентификатор категории, он будет искать только эту единственную категорию во всех формах поиска на веб-сайте –

+0

, относится ли эта категория к той же таксономии? – Noman

ответ

1

Редактировать search.php и добавить ниже код .. перебираем результат.

ниже кода будет искать ключевое слово с в определенных таксономических и его условия и тип пост post

function getAllTermsByTaxonomy($taxonomy) { 
    $taxonomy_terms = get_terms($taxonomy, array(
     'hide_empty' => 0, 
     'fields'  => 'ids' 
    )); 
    return $taxonomy_terms; 
} 
// Get all term ID's in a given taxonomy 
$terms_of_diadora = getAllTermsByTaxonomy('diadora'); 
$terms_of_iadera = getAllTermsByTaxonomy('iadera'); 
$terms_of_borik = getAllTermsByTaxonomy('borik'); 
$terms_of_adriana = getAllTermsByTaxonomy('adriana'); 
// Use the new `tax_query` WP_Query argument 
$args = array(
    's'   => get_query_var('s'), 
    'post_type' => 'post', 
    'tax_query' => array(
     'relation' => 'AND', 
     array(
      'taxonomy' => 'diadora', 
      'field' => 'term_id', 
      'terms' => $terms_of_diadora 
     ), 
     array(
      'taxonomy' => 'iadera', 
      'field' => 'term_id', 
      'terms' => $terms_of_iadera, 
     ), 
     array(
      'taxonomy' => 'borik', 
      'field' => 'term_id', 
      'terms' => $terms_of_borik, 
     ), 
     array(
      'taxonomy' => 'adriana', 
      'field' => 'term_id', 
      'terms' => $terms_of_adriana, 
     ), 
    ), 
); 
$query = new WP_Query($args); 
// Loop through the post 
+0

это здорово! спасибо за время и силы! –

+0

ваше приветствие :) было бы здорово, если бы вы первыми ответили: p – Noman

+0

я сделал, но он сказал, что у меня нет достаточного кредита, чтобы повысить ваш рейтинг: / –