In WooCommerce, there are two kinds of search: the customer one (frontend) and the admin one (backend). We’ve already covered how to let customers search into custom field values on top of the default product title and description, so this time we’ll talk about the backend search.
Let’s say, as a WooCommerce store admin, that you’ve added a product custom field (e.g. “gtin“), and you want to make sure the backend search also returns products where “gtin” is equal to the search term. The snippet below will help you do that. Enjoy!

PHP Snippet: Allow Admin to Search Products By Custom Field @ WordPress Dashboard
/**
* @snippet Search by Custom Field @ WP Dashboard
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @compatible WooCommerce 7
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_filter( 'posts_where', 'bbloomer_search_products_by_custom_field_in_admin', 9999, 2 );
function bbloomer_search_products_by_custom_field_in_admin( $where, $wp_query ) {
global $wpdb, $pagenow;
$post_type = 'product';
$custom_fields = array(
"gtin",
"ean",
);
if ( is_admin() && 'edit.php' === $pagenow && $wp_query->query['post_type'] === $post_type && isset( $_GET['s'] ) ) {
$get_post_ids = array();
foreach ( $custom_fields as $custom_field_name ) {
$args = array(
'posts_per_page' => -1,
'post_type' => $post_type,
'meta_query' => array(
array(
'key' => $custom_field_name,
'value' => wc_clean( wp_unslash( $_GET['s'] ) ),
'compare' => 'LIKE'
)
),
'fields' => 'ids',
);
$posts = get_posts( $args );
if ( ! empty( $posts ) ) {
foreach ( $posts as $post_id ) {
$get_post_ids[] = $post_id;
}
}
}
$search_ids = array_filter( array_unique( array_map( 'absint', $get_post_ids ) ) );
if ( count( $search_ids ) > 0 ) {
$where = str_replace( "wp_posts.ID IN (0)", "wp_posts.ID IN (" . implode( ',', $search_ids ) . ")", $where );
}
}
return $where;
}
Hi Rodolfo
I’ve placed the “PHP Snippet: Allow Admin to Search Products By Custom Field @ WordPress Dashboardis PHP” code into a new Code snippet but the results aren’t the right one (see screenshot)
Can you help me please? Grazie in anticipo
Eric
Where can I send you a screen shot?
Weird. You can upload your screenshot somewhere online and send me the link. Let me know
Hi Rodolfo
Sorry for the late reply. Here the link
https://capture.dropbox.com/OVGMhDdOTnAmvW9c
I create a new snippet and I paste the code inside
I try it but it didn’t get me the right results
Quiet al my fields are personalized
Eric
And your custom field keys are definitely “gtin” and “ean”?
No, I’ve type for example the name of a winemaker like Régis Descotes
Thank you. In the snippet, you need to make sure you’re using the right custom field keys. If the winemaker field has the key “winemaker”, then you need to use this inside the snippet, otherwise it will look for “gtin” or “ean” custom fields, which you probably don’t use. Makes sense?