V uživatelském účtu je k dispozici přehled objednávek. V detailu objednávky se pak pod každou položkou zobrazí i související metafieldy. To není příliš žádoucí a lze tomu zabránit.
V adresáři pluginu Woocommerce v podadresáři includer najděte soubor wc-template-functions.php. Z něho zkopírujte funkci wc_display_item_meta do souboru functions.php vaší šablony nebo child šablony.
Tato funkce je zodpovědná za zobrazování metafieldů na stránce detailu objednávky uživatele. Upravte ji dle potřeby. Tato funkce se bude vykonávat místo původní.
Původní funkce:
if ( ! function_exists( 'wc_display_item_meta' ) ) { /** * Display item meta data. * * @since 3.0.0 * @param WC_Order_Item $item Order Item. * @param array $args Arguments. * @return string|void */ function wc_display_item_meta( $item, $args = array() ) { $strings = array(); $html = ''; $args = wp_parse_args( $args, array( 'before' => '<ul class="wc-item-meta"><li>', 'after' => '</li></ul>', 'separator' => '</li><li>', 'echo' => true, 'autop' => false, 'label_before' => '<strong class="wc-item-meta-label">', 'label_after' => ':</strong> ', ) ); foreach ( $item->get_all_formatted_meta_data() as $meta_id => $meta ) { $value = $args['autop'] ? wp_kses_post( $meta->display_value ) : wp_kses_post( make_clickable( trim( $meta->display_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']; } $html = apply_filters( 'woocommerce_display_item_meta', $html, $item, $args ); if ( $args['echo'] ) { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo $html; } else { return $html; } } }
Příklad úpravy: na řádcích 28-30 byla přidána podmínka, která znemožňuje zobrazení metafieldů s meta_key ‘prvni_meta_key’ a ‘druhy_meta_key’
if ( ! function_exists( 'wc_display_item_meta' ) ) { /** * Display item meta data. * * @since 3.0.0 * @param WC_Order_Item $item Order Item. * @param array $args Arguments. * @return string|void */ function wc_display_item_meta( $item, $args = array() ) { $strings = array(); $html = ''; $args = wp_parse_args( $args, array( 'before' => '<ul class="wc-item-meta"><li>', 'after' => '</li></ul>', 'separator' => '</li><li>', 'echo' => true, 'autop' => false, 'label_before' => '<strong class="wc-item-meta-label">', 'label_after' => ':</strong> ', ) ); foreach ( $item->get_all_formatted_meta_data() as $meta_id => $meta ) { $value = $args['autop'] ? wp_kses_post( $meta->display_value ) : wp_kses_post( make_clickable( trim( $meta->display_value ) ) ); if( ( $meta->display_key != "prvni_meta_key" ) and ( $meta->display_key != "druhy_meta_key" ) ) { $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']; } $html = apply_filters( 'woocommerce_display_item_meta', $html, $item, $args ); if ( $args['echo'] ) { // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped echo $html; } else { return $html; } } }