@alexiusgrey

Как добавить поле товар из acf в заказ, в емейл о заказе, в админку о заказе и в один цикл?

Поле типичное текстовое, подзаголовок. Там ради дизайна сделали составной заголовок - заголовок товара и подзаголовок-поле sub_title.
Пробовал вот так, но что-то ничего не изменилось, как не было подзаголова, так и не видно его.
Вот span.product-subtitle есть,но пустой.
Поле - да - написал правильно - я его скопировал из админки.
function add_subtitle_before_product_title_in_order( $item_name, $item ) {
    $product = $item->get_product();
    if ( $product ) {
        $subtitle = get_field('sub_title', $product->get_id());
        if ( $subtitle ) {
            $item_name = '<span class="product-subtitle">' . esc_html( $subtitle ) . '</span><br>' . $item_name;
        }
    }
    return $item_name;
}
add_filter( 'woocommerce_order_item_name', 'add_subtitle_before_product_title_in_order', 10, 2 );

function add_subtitle_before_product_title_in_email( $item_name, $item ) {
    $product = $item->get_product();
    if ( $product ) {
        $subtitle = get_field('sub_title', $product->get_id());
        if ( $subtitle ) {
            $item_name = '<span class="product-subtitle">' . esc_html( $subtitle ) . '</span><br>' . $item_name;
        }
    }
    return $item_name;
}
add_filter( 'woocommerce_order_item_name', 'add_subtitle_before_product_title_in_email', 10, 2 );
add_filter( 'woocommerce_email_order_item_name', 'add_subtitle_before_product_title_in_email', 10, 2 );

// Add the subtitle column header to the order items table
function add_subtitle_column_header($columns) {
    $columns['subtitle'] = __('Subtitle', 'your-textdomain');
    return $columns;
}
add_filter('manage_edit-shop_order_item_columns', 'add_subtitle_column_header');

// Populate the subtitle column with the product subtitle
function display_subtitle_column_content($column, $item_id) {
    if ('subtitle' === $column) {
        $product = wc_get_order_item($item_id)->get_product();
        if ($product) {
            $subtitle = get_field('sub_title', $product->get_id()); // Assuming ACF is used for the subtitle field
            echo $subtitle ? esc_html($subtitle) : '';
        }
    }
}
add_action('manage_shop_order_posts_custom_column', 'display_subtitle_column_content', 10, 2);


А цикл вот такой, тоже не видит подзаголовка - пустой див, и не видит кнопку добавления в корзину.
<div class="cross-sells">
    <h2 class="en-text">COMPLETE YOUR ROUTINE:</h2>
    <h2 class="ru-text">Завершите Ваш заказ:</h2>
    <?php
    // Get the last added product to the cart
    $cart_items = WC()->cart->get_cart();
    $last_added_product_id = 0;
    foreach ($cart_items as $item) {
        $last_added_product_id = $item['product_id'];
    }
    // Get cross-sells for the last added product
    $cross_sells = get_post_meta($last_added_product_id, '_crosssell_ids', true);
    if ($cross_sells) {
        foreach ($cross_sells as $cross_sell_product_id) {
            $product = wc_get_product($cross_sell_product_id);
            if ($product) {
                ?>
                <div class="cross-sell-product">
                    <!-- Product Image, Title, and Subtitle -->
                    <a href="<?php echo esc_url(get_permalink($cross_sell_product_id)); ?>">
                        <?php echo $product->get_image(array(120, 120)); ?>
                        <span class="product-subtitle"><?php echo esc_html(get_post_meta($cross_sell_product_id, 'sub_title', true)); ?></span>
                        <span class="product-title"><?php echo esc_html($product->get_name()); ?></span>
                    </a>
                    <!-- Add to Cart Button -->
                    <button type="button" class="single_add_to_cart_button btn btn-primary" data-product_id="<?php echo esc_attr($product->get_id()); ?>"><?php esc_html_e('Add to Cart', 'your-textdomain'); ?></button>
                </div>
                <?php
                // Break out of the loop after displaying the first cross-sell item
                break;
            }
        }
    }
    ?>
</div>


Это битая тема и именно потому хуки не действуют (а она капец какая битая, но клиент небедный) или это я нашел в интернете неправильное решение и есть правильное? Если да, прошу поделиться им.
Зная, что многие тут ОЧЕНЬ БУКВАЛЬНЫЕ и на вопрос "Есть ли правльное решение" ответят "да" вместо самого кода и я пишу прям буквально - пожелитесь пожалуйста правильным кодом.
  • Вопрос задан
  • 19 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы