woocommerce не может получить фрагменты с помощью $ _product-> get_attributes ("pa_size"); - PullRequest
0 голосов
/ 17 июня 2020

В моей дочерней теме витрины в mini-cart.php я хотел бы отобразить атрибут размера моих товаров. Вот контекст кода, где вы можете увидеть эту строку <?php echo $_product->get_attributes("pa_size"); ?>. Я думал, что могу использовать get_attributes() на $_product внутри foreach, но он возвращает ошибку.

foreach ( WC()->cart->get_cart() as $cart_item_key => $cart_item ) {
            $_product     = apply_filters( 'woocommerce_cart_item_product', $cart_item['data'], $cart_item, $cart_item_key );
            $product_id   = apply_filters( 'woocommerce_cart_item_product_id', $cart_item['product_id'], $cart_item, $cart_item_key );

            if ( $_product && $_product->exists() && $cart_item['quantity'] > 0 && apply_filters( 'woocommerce_widget_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
                $product_name      = apply_filters( 'woocommerce_cart_item_name', $_product->get_name(), $cart_item, $cart_item_key );
                $thumbnail         = apply_filters( 'woocommerce_cart_item_thumbnail', $_product->get_image(), $cart_item, $cart_item_key );
                $product_price     = apply_filters( 'woocommerce_cart_item_price', WC()->cart->get_product_price( $_product ), $cart_item, $cart_item_key );
                $product_permalink = apply_filters( 'woocommerce_cart_item_permalink', $_product->is_visible() ? $_product->get_permalink( $cart_item ) : '', $cart_item, $cart_item_key );
                ?>
               <li class="woocommerce-mini-cart-item <?php echo esc_attr( apply_filters( 'woocommerce_mini_cart_item_class', 'mini_cart_item', $cart_item, $cart_item_key ) ); ?>">
                        <?php
                        echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf(
                            '<a href="%s" class="remove remove_from_cart_button" aria-label="%s" data-product_id="%s" data-cart_item_key="%s" data-product_sku="%s">&times;</a>',
                            esc_url( wc_get_cart_remove_url( $cart_item_key ) ),
                            __( 'Remove this item', 'woocommerce' ),
                            esc_attr( $product_id ),
                            esc_attr( $cart_item_key ),
                            esc_attr( $_product->get_sku() )
                        ), $cart_item_key );
                        ?>
                        <?php
                        //split product name and color
                        $pattern = '/ [^a-zA-Z0-9 ]+| –/';
                        $matches = array();
                        $dummy = preg_match($pattern, $product_name, $matches);
                        $posi = strpos($product_name, $matches[0]);
                        $productnamename = substr($product_name, 0, $posi);
                        $dashAndProductcolor    = substr($product_name, $posi);
                        ?>
                        <?php if ( empty( $product_permalink ) ) : ?>
                            <?php echo $thumbnail; ?>
                            <?php echo '<span class="minicart-prod-name">'.$productnamename.'</span><br/>' ?>
                            <?php echo '<span class="minicart-prod-color">'.$dashAndProductcolor.'</span>' ?>
                        <?php else : ?>
                            <a href="<?php echo esc_url( $product_permalink ); ?>">
                                <?php echo $thumbnail; ?>
                                <?php echo '<span class="minicart-prod-name">'.$productnamename.'</span><br/>' ?>
<?php echo $_product->get_attributes("pa_size"); ?>
                                <?php echo '<span class="minicart-prod-color">'.$dashAndProductcolor.'</span>' ?>
                            </a>
                        <?php endif; ?>
                        <?php echo wc_get_formatted_cart_item_data( $cart_item ); ?>
                        <?php echo apply_filters( 'woocommerce_widget_cart_item_quantity', '<span class="quantity">' . sprintf( '%s &times; %s', $cart_item['quantity'], $product_price ) . '</span>', $cart_item, $cart_item_key ); ?>
                    </li>

, но затем я получаю ошибку клиента в консоли: enter image description here

А может тут apply_filters?

1 Ответ

0 голосов
/ 18 июня 2020

Я наконец решил использовать <?php echo wc_get_formatted_cart_item_data( $cart_item ); ?> и настроить файл cart-item-data.php в соответствии со своими потребностями следующим образом:

if ( ! defined( 'ABSPATH' ) ) {
    exit;
}
?>

<?php foreach ( $item_data as $data ) : ?>
    <span class="<?php echo sanitize_html_class( 'variation-' . $data['key'] ); ?>"><?php echo wp_kses_post( wpautop( $data['display'] ) ); ?></span>
<?php endforeach; ?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...