WooCommerce - 获取自定义产品属性

5
我正在尝试获取WooCommerce中特定的自定义属性。 我阅读了该网站上提供的有关如何执行此操作的3-5种方法的大量线程。 在尝试所有方法后,唯一有效的方法是循环遍历所有属性 - 其他方法都没有起作用。 我有一个名为'pdfs'的自定义属性。 以下尝试均未成功:(link)
 $global product;
 $myPdf = array_shift( wc_get_product_terms( $product->id, 'pdfs', array( 'fields' => 'names' ) ) );

 $myPdf = $product->get_attribute( 'pdfs' );

 $myPdf = get_post_meta($product->id, 'pdfs', true);

这是唯一有效的: (link)

 $attributes = $product->get_attributes();
 foreach ( $attributes as $attribute ) {
    if (attribute_label( $attribute[ 'name' ] ) == "pdfs" ) {
        echo array_shift( wc_get_product_terms( $product->id,  $attribute[ 'name' ] ) );
    }
}
我更希望能够使用前面的选项。感谢任何帮助。
1个回答

8

更新:已兼容WooCommerce 3+

由于属性在数据库中始终以pa_开头,因此在使用wc_get_product_terms()函数获取它们时,您需要使用pa_pdfs而不是pdfs,如下所示:

global $product;

$product_id = method_exists( $product, 'get_id' ) ? $product->get_id() : $product->id; // Added WC 3+ support

$myPdf = array_shift( wc_get_product_terms( $product_id, 'pa_pdfs', array( 'fields' => 'names' ) ) );

参考: 如何从WooCommerce获取产品的自定义属性


我遇到了一个问题 --> 注意:只有变量应该通过引用传递。Woocommerce版本3.2.6。代码 ---> $date = array_shift( wc_get_product_terms( $product->get_id(), 'pa_date', array( 'fields' => 'names' ) ) ); 有什么问题吗?我无法解决它。我得到了gettype($date)的“Null”。也许我可以得到一些帮助? - Kristis
@Kristis 更新了答案,添加了 WC 3+ 兼容性……请再试一次。 - LoicTheAztec
谢谢,但我收到了相同的通知并且类型为“Null”。 以防万一,这是我的完整代码http://collabedit.com/vejqr - Kristis
@Kristis,你最好在StackOverFlow上提出一个完整详细的新问题,因为你的情况有些不同。 - LoicTheAztec

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,