wake-up-neo.net

Überprüfen Sie, ob sich das Termobjekt im Array befindet

Ich möchte überprüfen, ob sich ein Term-Objekt in einem get_terms-Array befindet, kann aber nicht herausfinden, wie es funktioniert.

$subcat_terms = get_terms([
  'taxonomy' => 'product_cat'
]);

$ subcat_terms generiert ein Array wie folgt:

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)

Ich habe versucht, mit der PHP-Funktion in_array zu überprüfen, aber da es Objekte hat, weiß ich nicht, wie das geht, möchte ich nach dem Begriff Objektnummer oder, wenn möglich, nach dem Begriff Schnecke suchen. Ich bin dankbar, wenn mir jemand hilft.

1
Gabriel Souza

WordPress hat die Funktion wp_list_pluck, die hier hilfreich sein kann. Wir können ein Array von nur Term-IDs aus dem Array von Objekten erstellen, z.

$term_ids = wp_list_pluck( $subcat_terms, 'term_id' );

Dann können wir in_array überprüfen:

$this_id = 42;
if( in_array( $this_id, $term_ids ) ){ // do something }
6
Milo

Eine einfache foreach-Schleife kann verwendet werden, um zu überprüfen, ob eine bestimmte slug (oder term_id oder eine andere Eigenschaft) in den von get_terms() zurückgegebenen Ergebnissen enthalten ist.

Im folgenden Beispiel enthält $special_term_slugs die Slugs, nach denen wir suchen möchten. Ich habe hier ein Array verwendet, damit wir nach mehreren Slugs suchen können, obwohl es in Ordnung ist, nur einen einzigen Slug zu verwenden.

In diesem Fall erhalten wir alle Begriffe für die gewünschte Taxonomie, product_cat.

Wenn Ergebnisse zurückgegeben werden, durchlaufen wir sie und prüfen, ob das aktuelle Termobjekt mit einem der in unserem Array $special_term_slugs definierten Slugs übereinstimmt.

// 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...

        }
    }
}
1
Dave Romsey