我尝试在线搜索并联系插件作者,他说可以使用WordPress的get post meta来检索它。
[我正在使用名为woo-gst的插件来添加名为'prod_hsn_id'的产品属性,该属性在产品编辑页面上添加了称为HSN代码的文件,我也正在使用名为woocommerce pdf发票的pdf发票插件来生成pdf发票。现在,我想在发票上显示HSN代码。
<?php foreach ( $this->order->get_items( 'line_item' ) as $item_id => $item ) {
$product = $this->order->get_product_from_item( $item ); ?>
<tr class="product-row">
<td>
<?php echo esc_html( $item['name'] );
global $wpdb;
$hidden_order_itemmeta = apply_filters( 'woocommerce_hidden_order_itemmeta', array(
'_qty',
'_tax_class',
'_product_id',
'_variation_id',
'_line_subtotal',
'_line_subtotal_tax',
'_line_total',
'_line_tax',
'_wc_cog_item_cost',
'_wc_cog_item_total_cost',
'_reduced_stock',
) );
$hidden_order_itemmeta = apply_filters( 'bewpi_hidden_order_itemmeta', $hidden_order_itemmeta );
foreach ( $this->order->has_meta( $item_id ) as $meta ) {
// Skip hidden core fields.
if ( in_array( $meta['meta_key'], $hidden_order_itemmeta, true ) ) {
continue;
}
// Skip serialised meta.
if ( is_serialized( $meta['meta_value'] ) ) {
continue;
}
// Get attribute data.
if ( taxonomy_exists( wc_sanitize_taxonomy_name( $meta['meta_key'] ) ) ) {
$term = get_term_by( 'slug', $meta['meta_value'], wc_sanitize_taxonomy_name( $meta['meta_key'] ) );
$meta['meta_key'] = wc_attribute_label( wc_sanitize_taxonomy_name( $meta['meta_key'] ) );
$meta['meta_value'] = isset( $term->name ) ? $term->name : $meta['meta_value'];
} else {
$meta['meta_key'] = apply_filters( 'woocommerce_attribute_label', wc_attribute_label( $meta['meta_key'], $product ), $meta['meta_key'] );
}
echo '<div class="item-attribute"><span style="font-weight: bold;">' . wp_kses_post( rawurldecode( $meta['meta_key'] ) ) . ': </span>' . wp_kses_post( rawurldecode( $meta['meta_value'] ) ) . '</div>';
}
$field_name = 'hsn_prod_id';
// then loop through items in order and print each custom field
foreach ( $this->order->get_items() as $item_id => $item ) {
if ( $product = $this->order->get_product_from_item( $item ) ) {
$location = $product->get_meta( $field_name );
if ( !empty($hsn_prod_id) ) {
echo '<div class="product-location">HSN Code: '.$hsn_prod_id.'</div>';
}
}
}
?>
</td>```
above is the code In the Invoice Template file I'm trying to display the HSN Code.
我今天正在同一个工作上,没有找到解决方案,最后这就是我所做的,并且效果很好。
我们需要从postmeta table
中提取数据,并获得post id
的product
。
如果执行$product_id = $product->get_id()
,将返回id (they call it Variation ID)
。 post id
和product id
不同。要获得post id
的product
,您需要subtract -1
形成$product_id
。
这是您可以用来获取HSN代码的行:
$hsn_prod_id = get_post_meta( $product->get_id()-1, 'hsn_prod_id', true );
更新:
subtract -1
的逻辑取决于Wordpress,WooCommerce版本可能是。我已经在无法正常工作的全新设置中尝试了相同的操作。在这里,我只使用了此$product_id = $product->get_id()
值就可以了。
您可以通过查看产品的ID来找到它。当您编辑订单时,它在UI中显示的ID和您在URL中看到的ID。如果两者不相同,则需要查看序列差异并致电。