Php 如何在模板/函数中显示WordPress自定义属性?

Php 如何在模板/函数中显示WordPress自定义属性?,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,会把它放在WP堆栈交换中,但他们经常说,因为它有PHP,所以应该放在SO中,所以永远不确定哪里是最好的。如果更合适,可以移动 要显示一个名为“Fabrics”的自定义woocommerce产品属性(例如,我读到的),您可以执行以下操作 $fabric_values = get_the_terms( $product->id, ‘pa_fabrics’); foreach ( $fabric_values as $fabric_value ) { echo $fabric_value

会把它放在WP堆栈交换中,但他们经常说,因为它有PHP,所以应该放在SO中,所以永远不确定哪里是最好的。如果更合适,可以移动

要显示一个名为“Fabrics”的自定义woocommerce产品属性(例如,我读到的),您可以执行以下操作

$fabric_values = get_the_terms( $product->id, ‘pa_fabrics’);

foreach ( $fabric_values as $fabric_value ) {
   echo $fabric_value->name;
}
然而,有没有一个更短的方法,因为我们将在整个php模板中使用许多属性

例如,有没有一种简单的方法,“echo获取_术语($product->id,'pa_fabrics');”

或者有没有一个单一的功能可以添加到他们的网站上,这样就可以在非商业网站上使用“高级自定义字段”时,通过上面这样一个非常短的行来响应任何产品属性

更新

在上找到,以便提供一种创建单个短代码的方法,从而相对容易地获取数据。虽然这当然是一种选择,但我想看看是否有任何清洁剂以如下方式建造:

echo get_the_terms( $product->id, 'pa_fabrics');


最后一个选项似乎是最干净和最理想的,但是导致了一个错误:“致命错误:未出错:调用No.in(MyFalth.PHP文件中的No..pP文件)中的NULL函数GETYAdvestEnter()。

< P>您的问题的答案取决于它。请考虑一下您需要的是多么灵活。

让我们先看看这两个建议示例的错误

1)
echo获取术语(…

在使用函数时,了解返回类型很重要。
get\u成功后,\u terms()
将返回一个数组。您需要对该数组执行一些操作才能显示它

2)
echo$product->get_属性(…

您正沿着正确的路径前进:)您看到的错误告诉您,
$product
并不是您所期望的。
get\u attributes()
WC\u product
类的一个方法。您需要该类的一个实例才能使用它

获取产品的一种方法是使用
wc\u get\u product()

现在,您遇到的第二个问题是该方法本身。
get\u attributes()
,与
get\u the\u terms()
类似,将返回一个数组。然后,您有责任显示该数据

相反,我认为您正在查找
get\u attribute()
。此方法将属性名称作为其唯一参数,并返回一个属性值字符串

例如:

// Get a product instance. I could pass in an ID here.
// I'm leaving empty to get the current product.
$product = wc_get_product();

// Output fabrics in a list separated by commas.
echo $product->get_attribute( 'pa_fabrics' );

// Now that I have $product, I could output other attributes as well.
echo $product->get_attribute( 'pa_colors' );

你是说?WooCommerce的新手,所以不太确定。你能提供一个例子,说明我如何将WooCommerce产品属性与你提供的功能结合使用吗?你是说,例如,上面的例子可以替换为:echo get_the_terms_list($product->id,'pa_fabrics'));如果您阅读文档,您会看到第一个参数是product/post ID,第二个参数是分类名称,正如您猜测的那样是
pa_color
。您在哪里/如何使用上述代码?请发布完整的代码片段。您的致命错误是
$product
为空而不是类对象。谢谢我们的描述和示例非常有用,非常有效。虽然我们希望能够像其他WordPress项目一样只显示一行,例如显示自定义字段、标题、日期、类别等,但您列出的此选项仍然比其他人考虑的要精简得多。非常感谢!我很高兴您发现它很有用:)您您可以选择将其压缩为一行,尽管我认为重点应该放在代码的简洁而不是紧凑上。
echo wc_get_product()->get_属性('pa_fabrics')
。请记住,我的示例不包括验证。最好检查您是否从
wc\u get\u product()
获得了预期的结果。您也可以尝试按照另一个用户的建议
获取\u term\u list()
,这样可以减轻验证过程。
$product = wc_get_product();
// Get a product instance. I could pass in an ID here.
// I'm leaving empty to get the current product.
$product = wc_get_product();

// Output fabrics in a list separated by commas.
echo $product->get_attribute( 'pa_fabrics' );

// Now that I have $product, I could output other attributes as well.
echo $product->get_attribute( 'pa_colors' );