Wordpress Woocommerce可搜索产品自定义字段

Wordpress Woocommerce可搜索产品自定义字段,wordpress,woocommerce,field,Wordpress,Woocommerce,Field,我的产品有两个重要代码,即EAN-13及其型号。我在SKU中写入了EAN-13,在自定义字段中写入了产品型号。SKU是完全可搜索的,但数据不是 有没有办法使产品自定义字段可以从后端办公室进行搜索 请帮忙!提前谢谢 当我搜索几乎类似的问题时,我在这里找到了解决方案,下面是我在子主题中为functions.php编写的代码: function extend_admin_search( $query ) { $custom_fields = array( "_file_name", );

我的产品有两个重要代码,即EAN-13及其型号。我在SKU中写入了EAN-13,在自定义字段中写入了产品型号。SKU是完全可搜索的,但数据不是

有没有办法使产品自定义字段可以从后端办公室进行搜索


请帮忙!提前谢谢

当我搜索几乎类似的问题时,我在这里找到了解决方案,下面是我在子主题中为functions.php编写的代码:

function extend_admin_search( $query ) {

$custom_fields = array(
    "_file_name",
);

if( ! is_admin() )
    return;

$search_term = $query->query_vars['s'];
$query->query_vars['s'] = '';
$query->set('_meta_or_title', $search_term);

if ( $search_term != '' ) {
    $meta_query = array( 'relation' => 'OR' );

    foreach( $custom_fields as $custom_field ) {
        array_push( $meta_query, array(
            'key' => $custom_field,
            'value' => $search_term,
            'compare' => 'LIKE'
        ));
    }
    $query->set( 'meta_query', $meta_query );
};
}
add_action( 'pre_get_posts', 'extend_admin_search', 6, 2);

add_action( 'pre_get_posts', function( $q )
{
if( $title = $q->get( '_meta_or_title' ) )
{
    add_filter( 'get_meta_sql', function( $sql ) use ( $title )
    {
        global $wpdb;

        // Only run once:
        static $nr = 0; 
        if( 0 != $nr++ ) return $sql;

        // Modified WHERE
        $sql['where'] = sprintf(
            " AND ( %s OR %s ) ",
            $wpdb->prepare( "{$wpdb->posts}.post_title like '%%%s%%'", $title),
            mb_substr( $sql['where'], 5, mb_strlen( $sql['where'] ) )
        );

        return $sql;
    }, 12, 1);
}
}, 12, 1);
免责声明:它是几年前使用的,所以我不能确定它现在是否可以正常工作