0

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.

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'
        )
    ));
};
  • 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.. :/ – Nazrin Noorzan Nov 3 '18 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 Nov 4 '18 at 10:00

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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