1

currently the search result only showing all the woocommerce default product field (product title, category, tag, .etc).

I've add a new custom field inside the woocommerce product using this code inside functions.php

/** Add Sub-Title option in Woocommerce */

add_action( 'woocommerce_product_options_general_product_data', 'my_custom_field' );

function my_custom_field() {

woocommerce_wp_text_input( 
array( 
    'id'          => '_subtitle', 
    'label'       => __( 'Reference', 'woocommerce' ), 
    'placeholder' => 'Reference code',
    'description' => __( 'Enter the reference code', 'woocommerce' ) 
)
);

}

add_action( 'woocommerce_process_product_meta', 'my_custom_field_save' );

function my_custom_field_save( $post_id ){  

$subtitle = $_POST['_subtitle'];
if( !empty( $subtitle ) )
    update_post_meta( $post_id, '_subtitle', esc_attr( $subtitle ) );

}

How can I include this custom field value in the search result? I've tried google for it, but no any significant solution.

1 Answer 1

0

You have to modify WooCommerce search query.

  1. Hook into this action: do_action( 'woocommerce_product_query', $query, $instance );
  2. Detect if it is a search query
  3. Add your _subtitle meta

Something like this (not tested):

if ( $query->is_search ) {
    $query->set('meta_query', array(
        array(
            'key' => '_subtitle',
            'value' => $query->query_vars['s'],
            'compare' => 'LIKE'
        )
    ));
};
2
  • function custom_search_query( $query ) { if ( $query->is_search ) { $query->set('meta_query', array( array( 'key' => '_subtitle', 'value' => $query->query_vars['s'], 'compare' => 'LIKE' ) )); }; } add_action( 'woocommerce_product_query', 'custom_search_query'); Not working though.. :/
    – iceiceicy
    Commented Nov 3, 2018 at 14:22
  • @NazrinNoorzan what part of it is not working? Did you try at least to figure it out? if yes what did you try.
    – sandrodz
    Commented Nov 4, 2018 at 10:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.