Rechercher dans les références (SKU) WooCommerce (et les références des variations)
En utilisant quelques hooks de SearchWP, vous pouvez facilement intégrer vos SKUs de produit (y compris les SKUs de variation) dans les recherches SearchWP.
Nous allons profiter de la capacité de SearchWP à absorber des données « supplémentaires » aux côtés de chaque entrée dans son index. Les produits WooCommerce et les variations de produits sont chacun un type de publication personnalisé. Les variations de produits sont essentiellement des enfants de leur produit parent, nous utiliserons donc un extrait pour que tous les SKUs de variation de produit soient indexés aux côtés du SKU parent :
All hooks should be added to your custom SearchWP Customizations Plugin.
| <?php | |
| // Add WooCommerce Product (and Variation) SKUs to SearchWP. | |
| // @link https://searchwp.com/documentation/knowledge-base/search-woocommerce-skus-and-variation-skus/ | |
| add_filter( 'searchwp\entry\data', function( $data, \SearchWP\Entry $entry ) { | |
| // If this is not a Product, there's nothing to do. | |
| if ( 'product' !== get_post_type( $entry->get_id() ) ) { | |
| return $data; | |
| } | |
| $my_extra_meta_key = 'searchwp_skus'; | |
| // Retrieve this Product SKU. | |
| $data['meta'][ $my_extra_meta_key ] = [ | |
| get_post_meta( $entry->get_id(), '_sku', true ) | |
| ]; | |
| // Retrieve all Variations. | |
| $product_variations = get_posts( [ | |
| 'post_type' => 'product_variation', | |
| 'posts_per_page' => -1, | |
| 'fields' => 'ids', | |
| 'post_parent' => $entry->get_id(), | |
| ] ); | |
| if ( empty( $product_variations ) ) { | |
| return $data; | |
| } | |
| // Append all Product Variation SKUs. | |
| foreach ( $product_variations as $product_variation ) { | |
| $sku = get_post_meta( $product_variation, '_sku', true ); | |
| $data['meta'][ $my_extra_meta_key ][] = $sku; | |
| } | |
| return $data; | |
| }, 20, 2 ); | |
| // Add our Extra Meta entry to SearchWP's UI. | |
| // @link https://searchwp.com/documentation/knowledge-base/search-woocommerce-skus-and-variation-skus/ | |
| add_filter( 'searchwp\source\attribute\options', function( $keys, $args ) { | |
| if ( $args['attribute'] !== 'meta' ) { | |
| return $keys; | |
| } | |
| // This key is the same as the one used in the searchwp\entry\data hook above, they must be the same. | |
| $my_extra_meta_key = 'searchwp_skus'; | |
| $option = new \SearchWP\Option( $my_extra_meta_key, 'SearchWP WooCommerce SKUs' ); | |
| // If there's already a match, remove it because we want ours there. | |
| $keys = array_filter( $keys, function( $option ) use ( $my_extra_meta_key ) { | |
| return $my_extra_meta_key !== $option->get_value(); | |
| } ); | |
| // Add "SearchWP WooCommerce SKUs" Option | |
| $keys[] = $option; | |
| return $keys; | |
| }, 20, 2 ); |
Avec l'extrait en place, nous pouvons maintenant ajouter les SKUs de produit WooCommerce de SearchWP à notre source de produits, rendant tous les SKUs de produit (et de variation) recherchables !


