将wc_get_product()与PHP变量一起用于产品ID

时间:2017-01-18 21:56:57

标签: php wordpress woocommerce advanced-custom-fields product

我在WooCommerce中为产品构建自定义目标网页,我希望在其他内容中获取产品价格,以便在目标网页上显示它们。

每个目标网页都有一些自定义字段,允许WP管理员添加内容,登录页面以及产品ID,然后用于生成产品价格,结帐网址等。

我无法让-0800使用我的自定义字段或内置的变量。它仅在我使用直接ID时有效。我认为我不了解变量在PHP中是如何工作的。这是我的代码。

wc_get_product();
  

更新

我使用 <?php //Gets the course ID from the custom field entered by user $courseID = the_field('course_id'); // This line is where the problem is... $_product = wc_get_product('$courseID'); // If I replace the line above with this line // $_product = wc_get_product('7217'); // everything works great, but that does not let // each landing page function based on the custom fields where the user determines // the product ID they are selling on that landing page. // Get's the price of the product $course_price = $_product->get_regular_price(); // Output the Course price ?> <span class="coursePrice">$<?php echo $course_price;?></span> wc_get_product( $courseID ); 收到以下错误:

get_product( $courseID );

4 个答案:

答案 0 :(得分:5)

  与您最近的评论相关的

更新探索的两种方式:

1)而不是你应该尝试使用获取产品对象(避免错误):

$courseID = the_field('course_id');

// Optionally try this (uncommenting)
// $courseID = (int)$courseID;

// Get an instance of the product object
$_product = new WC_Product($courseID);

2)或者,如果这不起作用,您应该尝试使用get_post_meta()函数以这种方式获取产品价格(或任何产品元数据)

<?php 
//Gets the course ID from the custom field entered by user
$courseID = the_field('course_id');

// Get the product price (from this course ID):
$course_price = get_post_meta($courseID, '_regular_price', true); 

// Output the Course price
?>  <span class="coursePrice">$<?php echo $course_price;?></span>

这次您应该使用一个或其他解决方案显示价格。

  

更新:可能还需要将$ courseID转换为整数变量。

因为您需要在wc_get_product()内使用变量 $courseID (没有2 ' )这样的方式:< / p>

<?php 

//Gets the course ID from the custom field entered by user
$courseID = the_field('course_id');

// Optionally try this (uncommenting)
// $courseID = (int)$courseID;

// Here
$_product = wc_get_product( $courseID );

$course_price = $_product->get_regular_price();

// Output the Course price
?>  <span class="coursePrice">$<?php echo $course_price;?></span>

现在应该可以了。

答案 1 :(得分:1)

你可以尝试一下:

$courseID = the_field('course_id');
$product = get_product( $courseID );

答案 2 :(得分:1)

在完成@LoicTheAztec在他的回复中提供的可能解决方案路线后,我找到了答案。这些都没有奏效,所以我认为还有其他的东西了。

我使用高级自定义字段在后端添加自定义字段,我使用ACF的the_field()来创建我的变量。这是该函数的错误使用,因为它旨在显示字段,(它基本上使用php的回声)。要使用这些自定义字段,您需要使用ACf的get_field() use it to store a value, echo a value and interact with a value.

一旦我切换到将$ courseID设置为此...

$courseID = get_field('course_id'); 

一切顺利。我的代码工作正常,所有@ LoicTheAztec的代码方法也有效。

答案 3 :(得分:0)

您也可以使用此方法

BridgeClass

官方API文档:wc_get_product