From 90bccd5da42d213a1bf1e6d75612638e9702f1df Mon Sep 17 00:00:00 2001 From: girishpanchal30 Date: Fri, 1 Aug 2025 17:32:39 +0530 Subject: [PATCH] fix: show PPOM fields in WC PDF invoices --- classes/plugin.class.php | 3 ++- inc/woocommerce.php | 49 ++++++++++++++++++++++++++++++++++------ 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/classes/plugin.class.php b/classes/plugin.class.php index ea8329d..fff6c0b 100644 --- a/classes/plugin.class.php +++ b/classes/plugin.class.php @@ -172,8 +172,9 @@ function __construct() { // when email improvements feature enabled in woocommerce. if ( ppom_wc_email_improvements_enabled() ) { - add_action( 'woocommerce_order_item_meta_end', 'ppom_woocommerce_order_item_meta_html', 10, 4 ); + add_action( 'woocommerce_order_item_meta_end', 'ppom_woocommerce_order_item_meta_html', 10, 2 ); add_filter( 'woocommerce_display_item_meta', '__return_empty_string' ); + add_filter( 'wpo_ips_display_item_meta_html', 'ppom_invoice_packing_slips_html', 10, 3 ); } else { // Few inputs like file/crop/image need to show meta value in tags add_filter( 'woocommerce_order_item_display_meta_value', 'ppom_woocommerce_order_value', 10, 3 ); diff --git a/inc/woocommerce.php b/inc/woocommerce.php index 3d1aa83..0734bee 100644 --- a/inc/woocommerce.php +++ b/inc/woocommerce.php @@ -1428,19 +1428,19 @@ function ppom_woocommerce_order_item_meta_html( $item_id, $item ) { $meta_item_html = ''; $output_args = apply_filters( 'ppom_woocommerce_item_meta_args', array( - 'before' => '
', - 'after' => '
', - 'separator' => '
', - 'label_before' => '', - 'label_after' => ': ', + 'before' => '', + 'separator' => '
  • ', + 'label_before' => '', + 'label_after' => ': ', ) ); foreach ( $formatted_meta as $meta ) { - $strings[] = $output_args['before'] . $output_args['label_before'] . wp_kses_post( $meta->display_key ) . $output_args['label_after'] . ppom_woocommerce_order_value( $meta->display_value, $meta, $item ) . $output_args['after']; + $strings[] = $output_args['label_before'] . wp_kses_post( $meta->display_key ) . $output_args['label_after'] . ppom_woocommerce_order_value( $meta->display_value, $meta, $item ); } if ( $strings ) { - $meta_item_html = implode( $output_args['separator'], $strings ); + $meta_item_html = $output_args['before'] . implode( $output_args['separator'], $strings ) . $output_args['after']; } echo wp_kses_post( $meta_item_html ); } @@ -1452,4 +1452,39 @@ function ppom_woocommerce_order_item_meta_html( $item_id, $item ) { */ function ppom_wc_email_improvements_enabled() { return 'yes' === get_option( 'woocommerce_feature_email_improvements_enabled', 'no' ); +} + +/** + * Outputs the formatted meta data for invoice or packing slips. + * + * @param string $html HTML of the item meta data + * @param \WC_Order_Item_Product $item The order item object. + * @param array $args arguments for display the html. + */ +function ppom_invoice_packing_slips_html( $html, $item, $args = array() ) { + $strings = array(); + $args = wp_parse_args( + $args, + array( + 'before' => '', + 'separator' => '
  • ', + 'echo' => true, + 'autop' => false, + 'label_before' => '', + 'label_after' => ': ', + ) + ); + + foreach ( $item->get_all_formatted_meta_data() as $meta_id => $meta ) { + $meta_value = ppom_woocommerce_order_value( $meta->display_value, $meta, $item ); + $value = $args['autop'] ? wp_kses_post( $meta_value ) : wp_kses_post( make_clickable( trim( $meta_value ) ) ); + $strings[] = $args['label_before'] . wp_kses_post( $meta->display_key ) . $args['label_after'] . $value; + } + + if ( $strings ) { + $html = $args['before'] . implode( $args['separator'], $strings ) . $args['after']; + } + + return $html; } \ No newline at end of file