Woocommerce可搜索产品自定义字段

时间:2019-11-13 08:28:10

标签: wordpress woocommerce field

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

是否可以通过后端办公室搜索产品自定义字段?

请帮助!预先感谢!

1 个答案:

答案 0 :(得分:1)

当我寻找几乎类似的问题时,我在https://dominykasgel.com/extend-search-custom-post-types-wordpress-admin/处找到了解决方案,这是我在子主题中用于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);

免责声明:它是几年前使用的,所以我不确定它现在是否可以正常工作。