将 wc_get_product() 与 PHP 变量一起用于产品 ID
Using wc_get_product() with a PHP variable for product ID
我正在为 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>
更新
我使用 wc_get_product( $courseID );
或 get_product( $courseID );
得到以下错误:
Fatal error: Call to a member function get_regular_price() on a non-object in ...
更新 与您最近的评论相关。 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);
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 '
) 以这种方式运行:
<?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>
现在应该可以了。
你可以试试这个:
$courseID = the_field('course_id');
$product = get_product( $courseID );
我在 运行 之后通过@LoicTheAztec 在他的回复中提供的可能的解决方案找到了答案。 None 其中有效,所以我认为还有其他问题。
我使用高级自定义字段在后端添加自定义字段,并且我使用 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 的所有代码方法也有效。
我正在为 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>
更新
我使用 wc_get_product( $courseID );
或 get_product( $courseID );
得到以下错误:
Fatal error: Call to a member function get_regular_price() on a non-object in ...
更新 与您最近的评论相关。 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);
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 '
) 以这种方式运行:
<?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>
现在应该可以了。
你可以试试这个:
$courseID = the_field('course_id');
$product = get_product( $courseID );
我在 运行 之后通过@LoicTheAztec 在他的回复中提供的可能的解决方案找到了答案。 None 其中有效,所以我认为还有其他问题。
我使用高级自定义字段在后端添加自定义字段,并且我使用 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 的所有代码方法也有效。