WordPress 将搜索限制为当前类别 Post
WordPress Limit Search to Category of Current Post
我有一个 WP 主题,它使用自己的搜索表单。在下面的代码中可以看到,当搜索表单显示在该类别中时,已经设置为在该类别中进行搜索。
我还设置了搜索表单显示在单个 posts 之上,但是当我在这个表单中搜索时,我得到了所有类别的结果。我希望搜索表单仅在 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…', '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>
编辑search.php
并添加以下代码..循环结果。
下面的代码将使用定义的分类法及其术语和 post 类型搜索关键字 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
我有一个 WP 主题,它使用自己的搜索表单。在下面的代码中可以看到,当搜索表单显示在该类别中时,已经设置为在该类别中进行搜索。
我还设置了搜索表单显示在单个 posts 之上,但是当我在这个表单中搜索时,我得到了所有类别的结果。我希望搜索表单仅在 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…', '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>
编辑search.php
并添加以下代码..循环结果。
下面的代码将使用定义的分类法及其术语和 post 类型搜索关键字 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