web-dev-qa-db-ja.com

get_terms - 数字のような名前__

'name__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__like"値を返しますが、残りは無視します。

何か案は?

1
Carpy

get_terms関数定義を見ると、name__likeの値は次のようにSQLクエリに渡されます。

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

そのように、私はあなたが数の1つだけを検索することができると信じます。

代わりの戦略として、データベースから引き出す数値を反復することができます。

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

さらに別の選択肢として、あなたはあなたが別の用語の子供を取得したいというこれらの用語のすべてを作ることができます。たとえば、IDが5の「Numbers」という名前の親用語を作成し、この用語の子として「番号付き」の用語をすべて割り当てると、次のようになります。

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

明らかに、どちらの戦略の成功もあなたのユースケースに依存しています。最初の選択肢はかなり高価ですが、Niceキャッシュ戦略では実際には問題にならないはずです。 2番目の方法では、データを異なる方法で構造化する必要があります。これは、状況に応じて機能する場合とそうでない場合があります。

0
tollmanz