web-dev-qa-db-fra.com

get_terms - name__comme un nombre

Utiliser Obtenir les termes avec l'argument de 'name__like', comment puis-je renvoyer tous les résultats commençant par un nombre?

J'ai essayé:

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

et

$feats = get_terms( 'movies', array('name__like' => '1,2,3,4,5,6,') ); 

Ni fonctionnent correctement. La première méthode retournera la dernière valeur "name__like" mais ignorera le reste.

Des idées?

1
Carpy

En regardant la définition de la fonction get_terms, la valeur de name__like sera transmise à la requête SQL comme suit:

" AND t.name LIKE '{$name__like}%'"

En tant que tel, je pense que vous ne pouvez rechercher qu'un seul des nombres.

Comme stratégie alternative, vous pouvez parcourir les numéros que vous souhaitez extraire de la base de données:

$terms = array();
$numbers = range( 1, 6 );
foreach ( $numbers as $number )
    $terms[] = get_terms( 'movies', array( 'name__like' => $number ) );

Comme alternative encore, vous pouvez faire en sorte que tous ces termes désirent avoir un enfant d'un autre terme. Par exemple, si vous créez un terme parent appelé "Numbers", avec l'id de 5, et affectez tous les termes "numérotés" en tant qu'enfant de ce terme, vous pouvez faire:

get_terms( 'movies', array( 'parent' => 5 ) );

De toute évidence, le succès de l'une ou l'autre stratégie dépend de votre cas d'utilisation. La première alternative est assez chère, mais avec une stratégie de cache Nice ne devrait vraiment pas être un problème. La deuxième méthode nécessite une structuration différente des données, susceptibles de ne pas convenir à votre situation.

0
tollmanz