我正在制作一个代码来从产品标题中获取产品对象。 我正在从我的记事本文件中读取产品标题并将其传递给Wordpress函数。
以下是<script>
var handler = StripeCheckout.configure({
key: 'pk_test_mykey',
image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
locale: 'sv',
token: function(token) {
// You can access the token ID with `token.id`.
// Get the token ID to your server-side code for use.
}
});
document.getElementById('customButton').addEventListener('click', function(e) {
stripe_spots = document.getElementById("spots").value;
stripe_total = (stripe_spots) * 70;
// Open Checkout with further options:
handler.open({
name: 'Revy!',
description: stripe_spots + " platser",
zipCode: true,
currency: 'sek',
amount: stripe_total * 100
});
e.preventDefault();
});
// Close Checkout on page navigation:
window.addEventListener('popstate', function() {
handler.close();
});
</script>
是产品标题的功能。
$pval
产品标题是这样的: $productdetail_by_title = get_page_by_title($pval, OBJECT, 'product');
print_r($productdetail_by_title);
exit;
但我无法获得产品对象。如果我静静地通过这个标题:
200x Slopupovací pleťová Rusk
然后我就能得到产品对象。请帮忙。
答案 0 :(得分:2)
使用get_page_by_title()
WordPress功能,您将无法获得WC_Product
对象,但如果它正常工作,您将获得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+上进行测试并正常运行。