请尝试此代码
function search_by_sku( $search, &$query_vars ) {
global $wpdb, $pagenow;
if ( \'edit.php\' != $pagenow || ! is_search() || ! isset( $query_vars ->query_vars[\'s\'] ) || \'product\' != $query_vars ->query_vars[\'post_type\'] ) {
return $search;
}
if(isset($query_vars->query[\'s\']) && !empty($query_vars->query[\'s\'])){
$args = array(
\'posts_per_page\' => -1,
\'post_type\' => \'product\',
\'meta_query\' => array(
array(
\'key\' => \'_sku\',
\'value\' => $query_vars->query[\'s\'],
\'compare\' => \'LIKE\'
)
)
);
$posts = get_posts($args);
if(empty($posts)) return $search;
$get_post_ids = array();
foreach($posts as $post){
$get_post_ids[] = $post->ID;
}
if(sizeof( $get_post_ids ) > 0 ) {
$search = str_replace( \'AND (((\', "AND ((({$wpdb->posts}.ID IN (" . implode( \',\', $get_post_ids ) . ")) OR (", $search);
}
}
return $search;
}
add_filter( \'posts_search\', \'search_by_sku\', 999, 2 );