在woocommerce中获取Pdf发票中的HSN代码

问题描述 投票:0回答:1

我尝试在线搜索并联系插件作者,他说可以使用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.
php wordpress metadata invoice
1个回答
0
投票

我今天正在同一个工作上,没有找到解决方案,最后这就是我所做的,并且效果很好。

我们需要从postmeta table中提取数据,并获得post idproduct

如果执行$product_id = $product->get_id(),将返回id (they call it Variation ID)post idproduct id不同。要获得post idproduct,您需要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。如果两者不相同,则需要查看序列差异并致电。

© www.soinside.com 2019 - 2024. All rights reserved.