获取类别名称以术语开头的帖子

时间:2014-02-08 22:30:48

标签: php wordpress

如果我使用WP_Query类,例如:

$query = new WP_Query( 'category_name=staff,news' );

我将使用类别slug获取具有这些类别的帖子,但是如何获得类别名称以术语开头的帖子,例如:

$query = new WP_Query( 'category_name=s%' );

我希望我能很好地解释我的问题。感谢

2 个答案:

答案 0 :(得分:0)

您可以在主题functions.php中创建一个函数,如:

<?php

/**
* @ $taxonomy = the taxonomy name 
* @ $search = the string you are searching
* @ return array of term names
*/
function getDesiredTerms($taxonomy, $search) {

    $result = get_terms(
        $taxonomy, 
        array(
            'hide_empty'    => false, // get them all           
            'fields'        => 'names', // get only the term names  
            'name__like'    => $search // Note: This was changed in WordPress 3.7, when previously name__like matched terms that begin with the string.
            )
        );
    return $result;

}

请注意您正在使用的Wordpress版本。

http://codex.wordpress.org/Function_Reference/get_terms在食典委的更多细节。 寻找'name__like'参数

答案 1 :(得分:0)

万一有人偶然发现,我需要进行搜索,其中包括功能get_terms中的模糊匹配。我最初使用name__like来帮助优化搜索结果,但最终获得了所有术语,并使用similar_text()来比较搜索输入与术语名称。

下面是我最终使用的功能。希望它可以帮助某人:

$search_text = "WHATEVER YOUR SEARCH INPUT IS";

$args = array(
    'taxonomy'      => array( 'product_cat' ), // taxonomy name
    'orderby'       => 'id', 
    'order'         => 'ASC',
    'hide_empty'    => false,
    'fields'        => 'all'
    //'name__like'    => $search_text  //I TOOK THIS PART OUT
); 
$terms = get_terms( $args );

//FILTER FUZZY MATCHING
foreach($terms as $term) {
    $item = similar_text($search_text, $term->name, $percentage);
    if($percentage >= 50) :
        echo $term->name . ' - ' . $percentage . '<br />';
    endif; 
}

您可以修改百分比阈值以产生所需的结果。就我而言,这对我来说非常有用。在某些情况下,它对其他人可能效果不佳。