Je veux vérifier si un objet terme est dans un tableau get_terms, mais je ne peux vraiment pas comprendre comment le faire.
$subcat_terms = get_terms([
'taxonomy' => 'product_cat'
]);
$ subcat_terms génère un tableau comme celui-ci:
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)
J'ai essayé de vérifier avec la fonction in_array de PHP, mais comme il a des objets, je ne sais pas comment faire cela, je voudrais vérifier par le terme numéro d'objet ou si possible par le terme slug. Je serai reconnaissant si quelqu'un m'aide.
WordPress a la fonction wp_list_pluck
, ce qui peut être utile ici. Nous pouvons créer un tableau d'ID de termes simples à partir d'un tableau d'objets comme:
$term_ids = wp_list_pluck( $subcat_terms, 'term_id' );
Ensuite, nous pouvons vérifier in_array
:
$this_id = 42;
if( in_array( $this_id, $term_ids ) ){ // do something }
Une simple boucle foreach
peut être utilisée pour vérifier si une certaine slug
(ou term_id
ou toute autre propriété) figure dans les résultats renvoyés par get_terms()
.
Dans l'exemple suivant, $special_term_slugs
contient les slugs que nous souhaitons rechercher. J'ai utilisé un tableau ici pour que nous puissions rechercher plusieurs slugs, bien que ce ne soit pas grave de n'utiliser qu'un seul slug.
Nous obtenons tous les termes de la taxonomie souhaitée, product_cat
, dans ce cas.
Si les résultats sont renvoyés, nous les parcourons en vérifiant si le terme objet en cours correspond à l'un des slugs définis dans notre tableau $special_term_slugs
.
// 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...
}
}
}