And*_*kUp 6 php wordpress product woocommerce advanced-custom-fields
我正在为WooCommerce中的产品构建自定义目标网页,我希望在其他内容中获取产品价格,以便在目标网页上显示它们.
每个登录页面都有一些自定义字段,允许WP管理员添加内容,登录页面以及产品ID,然后将用于生成产品价格,结帐URL等.
我无法wc_get_product();使用我的自定义字段或内置的变量.它仅在我使用直接ID时有效.我认为我不了解变量如何在PHP中运行.这是我的代码.
<?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>
Run Code Online (Sandbox Code Playgroud)
更新
我使用wc_get_product( $courseID );或得到以下错误get_product( $courseID );:
Fatal error: Call to a member function get_regular_price() on a non-object in ...
Run Code Online (Sandbox Code Playgroud)
与您最近评论相关的更新。探索的2种方法:
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);
Run Code Online (Sandbox Code Playgroud)
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>
Run Code Online (Sandbox Code Playgroud)
这次,您应该使用一种或其他解决方案显示价格。
更新:可能还需要将$ courseID转换为整数变量。
因为您需要以这种方式$courseID在wc_get_product()(不带2的')函数内部使用变量:
<?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>
Run Code Online (Sandbox Code Playgroud)
现在应该可以使用了。
在浏览了 @LoicTheAztec 在他的回复中提供的可能的解决方案路线后,我找到了答案。这些都不起作用,所以我认为还有其他问题。
我使用高级自定义字段在后端添加自定义字段,并且我使用 ACFthe_field()来创建变量。这是该函数的错误用法,因为它旨在显示字段(它基本上使用 php 的 echo)。要使用这些自定义字段,您需要使用 ACf,get_field()即使用它来存储值、回显值并与值交互。
一旦我切换到将我的 $courseID 设置为这个..
$courseID = get_field('course_id');
Run Code Online (Sandbox Code Playgroud)
一切顺利。我的代码有效,所有 @LoicTheAztec 的代码方法也有效。