Php 从产品标题中获取产品对象

Php 从产品标题中获取产品对象,php,wordpress,woocommerce,product,page-title,Php,Wordpress,Woocommerce,Product,Page Title,我正在制作一个代码,从产品标题中获取产品对象。 我正在从记事本文件中读取产品标题,并将其传递给Wordpress函数 下面是一个函数,$pval是一个产品标题 $productdetail_by_title = get_page_by_title($pval, OBJECT, 'product'); print_r($productdetail_by_title); exit; 产品名称如下:200x SlopupovacípleťováRusk 但我无法获取产品对象。如果我像这样静态地

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

下面是一个函数,
$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;
然后我可以得到产品对象。请提供帮助。

使用WordPress功能,您将无法获得objet,但如果它正常工作,您将获得该对象

因此,这里有一个定制的函数,如果标题与真实的产品标题匹配,它将输出WC_产品对象:

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+上进行了测试,可以正常工作。

为什么在这个字符串中使用LIKE
和post\u type LIKE'product'
product\u type
是否应该完全匹配
product
?@RWS“product”在查询“wp\u posts”表时不是产品类型,而是WordPress自定义“post\u type”…产品类型在自定义分类法“product\u type”中定义为特定术语。有许多产品类型,如“简单”、“可变”、“外部”…我实际上拼错了,我指的是post_类型。是的,你是对的,我完全忘记了其他产品类型,谢谢你的澄清。只有当我将查询的各个部分更改为类似“%$post\U title%”的
post\U title%时,它才对我有效。