Php Wordpress元查询分类法don';行不通

Php Wordpress元查询分类法don';行不通,php,wordpress,custom-post-type,taxonomy,Php,Wordpress,Custom Post Type,Taxonomy,在我的博客上,我成功地研究了文章标题和内容,但在我尝试使用meta_query()和REGEXP对文章“类别”的自定义分类法进行研究后,没有成功 我的表格: <div class="zone_filters"> <form action="" method="GET"> <input type="hidden" name="page_id" value="249" /> <input type="text" name="search_

在我的博客上,我成功地研究了文章标题和内容,但在我尝试使用
meta_query()
REGEXP
对文章“类别”的自定义分类法进行研究后,没有成功

我的表格:

<div class="zone_filters">
  <form action="" method="GET">
    <input type="hidden" name="page_id" value="249" />
    <input type="text" name="search_input" />
    <select name="type">
        <option value="title">titre et texte</option>
        <option value="category">catégorie</option>
    </select>
    <select name="orderby">
        <option value="DESC">plus récent</option>
        <option value="ASC">plus ancien</option>
    </select>
    <button type="submit">OK</button>
  </form>
</div>

标题和文本
凯蒂戈里酒店
加分
加上古人
好啊
我的论点是:

<?php 

$orderby = 'DESC';

if($_GET['orderby']) {

    $orderby = $_GET['orderby'];
}

$args = array(
    'post_type' => 'article',
    'posts_per_page' => 3,
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1,
    'orderby' => array('date' => $orderby)
);

if($_GET['type'] == 'title') {

    $args['s'] = $_GET['search_input'];
}
elseif($_GET['type'] == 'category') {

    $value = '^[a-zA-Z|\s]*(' . strtoupper( $_GET['search_input']) . '|' . strtolower( $_GET['search_input']) . ')[a-zA-Z|\s]*$';

    $args['meta_query'] = array(array('key' => 'categories', 'value' => $value, 'compare' => 'REGEXP'));

}

$query = new WP_Query($args);?>
<?php 

$orderby = 'DESC';

if($_GET['orderby']) {

    $orderby = $_GET['orderby'];
}

$args = array(
    'post_type' => 'article',
    'posts_per_page' => 3,
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1,
    'orderby' => array('date' => $orderby)
);

if($_GET['search_input'] != '') {

    $args['s'] = $_GET['search_input'];
}
elseif($_GET['categories']) {

    $args['categories'] = $_GET['categories'];
}

$query = new WP_Query($args);?>

我是从学校学的
我找不到我的代码和单据之间的差异。

使用税务查询进行分类

$args['tax_query'] = array(array('taxonomy' => 'categories', 'field' => 'slug', 'terms' => $value));
根据您的html

<div class="zone_filters">
  <form action="" method="GET">
    <input type="hidden" name="page_id" value="249" />
    <input type="text" name="search_input" />
    <select name="type">
        <option value="">titre et texte</option>
        <option value="category-1">Category 1</option>
        <option value="category-2">Category 2</option>
        <option value="category-3">Category 3</option>
    </select>
    <select name="orderby">
        <option value="DESC">plus récent</option>
        <option value="ASC">plus ancien</option>
    </select>
    <button type="submit">OK</button>
  </form>
</div>

<?php 

$orderby = 'DESC';

if($_GET['orderby']) {

    $orderby = $_GET['orderby'];
}

$args = array(
    'post_type' => 'article',
    'posts_per_page' => 3,
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1,
    'orderby' => array('date' => $orderby)
);

if($_GET['type'] == 'title') {

    $args['s'] = $_GET['search_input'];
}
elseif($_GET['type'] == 'category') {

    $value = '^[a-zA-Z|\s]*(' . strtoupper( $_GET['search_input']) . '|' . strtolower( $_GET['search_input']) . ')[a-zA-Z|\s]*$';

    $args['tax_query'] = array(array('taxonomy' => 'categories', 'field' => 'slug', 'terms' => $value));

}

$query = new WP_Query($args);?>

标题和文本
第一类
第2类
第3类
加分
加上古人
好啊

对类别使用税务查询

$args['tax_query'] = array(array('taxonomy' => 'categories', 'field' => 'slug', 'terms' => $value));
根据您的html

<div class="zone_filters">
  <form action="" method="GET">
    <input type="hidden" name="page_id" value="249" />
    <input type="text" name="search_input" />
    <select name="type">
        <option value="">titre et texte</option>
        <option value="category-1">Category 1</option>
        <option value="category-2">Category 2</option>
        <option value="category-3">Category 3</option>
    </select>
    <select name="orderby">
        <option value="DESC">plus récent</option>
        <option value="ASC">plus ancien</option>
    </select>
    <button type="submit">OK</button>
  </form>
</div>

<?php 

$orderby = 'DESC';

if($_GET['orderby']) {

    $orderby = $_GET['orderby'];
}

$args = array(
    'post_type' => 'article',
    'posts_per_page' => 3,
    'paged' => get_query_var('paged') ? get_query_var('paged') : 1,
    'orderby' => array('date' => $orderby)
);

if($_GET['type'] == 'title') {

    $args['s'] = $_GET['search_input'];
}
elseif($_GET['type'] == 'category') {

    $value = '^[a-zA-Z|\s]*(' . strtoupper( $_GET['search_input']) . '|' . strtolower( $_GET['search_input']) . ')[a-zA-Z|\s]*$';

    $args['tax_query'] = array(array('taxonomy' => 'categories', 'field' => 'slug', 'terms' => $value));

}

$query = new WP_Query($args);?>

标题和文本
第一类
第2类
第3类
加分
加上古人
好啊

它是这样工作的:

表格:

<div class="zone_filters">
    <form action="" method="GET">
        <input type="hidden" name="page_id" value="249" />
        <input type="text" name="search_input" />
        <select name="categories">

            <?php $allterms = get_terms('categories');

            foreach($allterms as $term) : ?>

                <option value="<?php echo $term->slug; ?>"><?php echo $term->name; ?></option>

            <?php endforeach ?>
        </select>
        <select name="orderby">
            <option value="DESC">plus récent</option>
            <option value="ASC">plus ancien</option>
        </select>
        <button type="submit">OK</button>
    </form>
</div>

它是这样工作的:

表格:

<div class="zone_filters">
    <form action="" method="GET">
        <input type="hidden" name="page_id" value="249" />
        <input type="text" name="search_input" />
        <select name="categories">

            <?php $allterms = get_terms('categories');

            foreach($allterms as $term) : ?>

                <option value="<?php echo $term->slug; ?>"><?php echo $term->name; ?></option>

            <?php endforeach ?>
        </select>
        <select name="orderby">
            <option value="DESC">plus récent</option>
            <option value="ASC">plus ancien</option>
        </select>
        <button type="submit">OK</button>
    </form>
</div>


您是否使用类别名称搜索“类别”分类法,对吗?此处的类别名称符合您的分类法。这是一种很好的方法。而且比搜索栏更简单。谢谢你是用类别名称搜索“类别”分类法的吗?这里的类别名称符合你的分类法。这是一个很好的方法。而且比搜索栏更简单。谢谢