phpmysqlwordpresswoocommercecustom-fields

Woocommerce get Product id using product SKU


I'm working on a separate templates page, which page gets woocommece product sku using custom field of wordpress post. i need to get product id of that sku for create woocommece object and do further things, here is my code.

global $woocommerce;
//this return sku (custom field on a wordpress post)
$sku=get_field( "product_sku" );
if($sku!=''){
  //need to create object, but using sku cannot create a object, 
  $product = new WC_Product($sku); 
  echo $product->get_price_html();
}

is there way to get product id before create object, then i can pass the product id to WC_Product class constructor and create object.thank you


Solution

  • You can use this function (found here). Google is your friend!

    function get_product_by_sku( $sku ) {
    
        global $wpdb;
    
        $product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) );
    
        if ( $product_id ) return new WC_Product( $product_id );
    
        return null;
    }