【问题标题】:WordPress Limit Search to Category of Current PostWordPress 将搜索限制为当前帖子的类别
【发布时间】:2016-09-21 07:52:23
【问题描述】:

我有一个使用自己的搜索表单的 WP 主题。正如您在下面的代码中看到的那样,当搜索表单显示在该类别中时,它已经设置为在该类别中搜索。

我还将搜索表单设置为显示在单个帖子上方,但是当我在此表单中搜索时,我会得到所有类别的结果。我希望搜索表单仅在该帖子的类别中进行搜索。

我到处搜索,但找不到解决方案。提前谢谢!

<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>

【问题讨论】:

  • 只需将&lt;?php echo esc_attr( get_query_var( 'cat' ) ); ?&gt; 替换为类别ID
  • 感谢回复,但是我有30个分类,我需要能够在每个分类中单独搜索,所以我实际上需要它来找出当前帖子属于哪个分类并在该分类中搜索.如果我只添加类别 ID,它将仅在网站上的所有搜索表单中搜索该单个类别
  • 这些类别是否属于同一分类法?
  • 否,但如果有帮助,我可以将自定义分类法添加到类别中
  • 我们是否可以在这部分代码中添加“或”: 以便检查它是类别还是帖子属于类别?跨度>

标签: php wordpress search limit search-form


【解决方案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

【讨论】:

  • 欢迎您 :) 如果您支持回答,那就太好了:p
  • 我做到了,但它说我没有足够的信誉来支持你:/
猜你喜欢
  • 2012-09-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-21
  • 1970-01-01
  • 1970-01-01
  • 2015-02-22
相关资源
最近更新 更多