Get_Terms-NAME__喜欢数字

时间:2012-02-05 作者:Carpy

使用Get Terms 如果参数为“name\\uu like”,如何返回所有以任意数字开头的结果?

我尝试过:

$feats = get_terms( \'movies\', array(\'name__like\' => \'1\', \'name__like\' => \'2\', \'name__like\' => \'3\' ) ); 
以及

$feats = get_terms( \'movies\', array(\'name__like\' => \'1,2,3,4,5,6,\') ); 
两者都不能正常工作。第一个方法将返回最后一个“name\\uu like”值,但忽略其余值。

有什么想法吗?

1 个回复
最合适的回答,由SO网友:tollmanz 整理而成

查看get_terms 函数定义的值name__like 将传递到SQL查询,如下所示:

" AND t.name LIKE \'{$name__like}%\'"
因此,我相信您只能搜索其中一个数字。

作为一种替代策略,您可以迭代要从数据库中提取的数字:

$terms = array();
$numbers = range( 1, 6 );
foreach ( $numbers as $number )
    $terms[] = get_terms( \'movies\', array( \'name__like\' => $number ) );
作为另一种选择,您可以制作所有这些术语,以获得另一个术语的孩子。例如,如果创建一个id为5的名为“数字”的父术语,并将所有“数字”术语指定为该术语的子术语,则可以执行以下操作:

get_terms( \'movies\', array( \'parent\' => 5 ) );
显然,任何一种策略的成功都取决于您的用例。第一种选择相当昂贵,但使用一个好的缓存策略真的不应该成为问题。第二种方法要求以不同的方式构建数据,这些数据可能适用于您的情况,也可能不适用于您的情况。

结束