オブジェクトという用語がget_terms配列に含まれているかどうかを確認したいのですが、その方法がわかりません。
$subcat_terms = get_terms([
'taxonomy' => 'product_cat'
]);
$ subcat_termsは次のような配列を生成します。
array (size=3)
0 =>
object(WP_Term)[10551]
public 'term_id' => int 16
public 'name' => string 'Hardware' (length=8)
public 'slug' => string 'hardware' (length=8)
public 'term_group' => int 0
public 'term_taxonomy_id' => int 16
public 'taxonomy' => string 'product_cat' (length=11)
public 'description' => string '' (length=0)
public 'parent' => int 0
public 'count' => int 4
public 'filter' => string 'raw' (length=3)
public 'meta_value' => string '0' (length=1)
私はphp関数in_arrayを使ってチェックしようとしましたが、オブジェクトを持っているのでこれを行う方法がわかりません。オブジェクト番号という用語で、または可能であればslugという用語でチェックしたいのです。誰かが私を助けてくれたら私は感謝するでしょう。
WordPressにはwp_list_pluck
関数があり、これはここで役に立ちます。次のように、オブジェクトの配列から用語IDだけの配列を作成できます。
$term_ids = wp_list_pluck( $subcat_terms, 'term_id' );
それならin_array
をチェックすることができます:
$this_id = 42;
if( in_array( $this_id, $term_ids ) ){ // do something }
単純なforeach
ループを使用して、特定のslug
(またはterm_id
またはその他のプロパティ)がget_terms()
から返される結果に含まれているかどうかを確認できます。
次の例では、$special_term_slugs
は検索したいスラッグを保持しています。ここでは複数のスラッグを検索できるように配列を使用しましたが、スラッグを1つだけ使用しても問題ありません。
この場合、目的の分類法、product_cat
、に対するすべての用語が得られます。
結果が返された場合は、現在のtermオブジェクトが$special_term_slugs
配列で定義されているスラッグの1つに一致するかどうかを確認するために結果を繰り返します。
// Array of term slugs to check for. Customize as needed.
$special_term_slugs = [
'hardware',
];
// Attempt to get the terms.
$subcat_terms = get_terms( [
'taxonomy' => 'product_cat'
] );
// If we get results, search for our special term slugs.
if ( is_array( $subcat_terms ) ) {
foreach ( $subcat_terms as $subcat_term ) {
if ( in_array( $subcat_term->slug, $special_term_slugs ) ) {
// Special term was found. Do something...
}
}
}