2017-07-25 107 views
1

我正在制作一个代码以从产品标题获取产品对象。 我正在从我的记事本文件中读取产品标题并将其传递给Wordpress功能。WooCommerce从产品标题获取产品对象

以下是$pval是产品名称的功能。

$productdetail_by_title = get_page_by_title($pval, OBJECT, 'product'); 
print_r($productdetail_by_title); 
exit; 

产品标题是这样的:200x Slopupovací pleťová Rusk

但我没能获得产品对象。如果我这样静态地通过这个标题:

$productdetail_by_title = get_page_by_title("200x Slopupovací pleťová Rusk", OBJECT, 'product'); 
print_r($productdetail_by_title); 
exit; 

然后我能够获得产品对象。请帮忙。

回答

0

随着get_page_by_title() WordPress的功能,你不会得到WC_Product objet,但如果它的工作,你会得到WP_Post对象。

因此,这里是一个定制的功能,将输出WC_Product对象,如果标题与真实的产品名称相匹配:

function get_wc_product_by_title($title){ 
    global $wpdb; 

    $post_title = strval($title); 

    $post_table = $wpdb->prefix . "posts"; 
    $result = $wpdb->get_col(" 
     SELECT ID 
     FROM $post_table 
     WHERE post_title LIKE '$post_title' 
     AND post_type LIKE 'product' 
    "); 

    // We exit if title doesn't match 
    if(empty($result[0])) 
     return; 
    else 
     return wc_get_product(intval($result[0])); 
} 

代码放在您的活动子主题的function.php文件(或主题)还是在任何插件文件中。

实例:

// Your title set in a variable 
$title = "200x Slopupovací pleťová Rusk"; 

// Using our custom function to get an instance of the WC_Product object 
$product_obj = get_wc_product_by_title($title); 

// Testing the output 
print_r($product_obj); 

此代码对WooCommerce 3+和工程测试。