Введите часть искомого слова, названия или фразы...
↑ ↓
  1. Новые темы озаглавленные с маленькой буквы - удаляются без предупреждения!
  2. Вопрос без рабочей ссылки на проблему считается риторическим. Без ссылки и скриншота - провокацией!

Вывод произвольных полей

Тема в разделе "Вопросы, советы и доработки.", создана пользователем alextwinner, 5 июн 2016.

  1. alextwinner

    alextwinner

    Сообщения:
    22
    Симпатии:
    2
    Баллы:
    3
    Создаю произвольное поле с помощью плагина Advanced Custom Fields https://www.advancedcustomfields.com/ (тоже дополнительное поле, только более удобное)

    Объясните пож. как это поле теперь выводить в разных местах?
    в карте
    в корзине
    в кабинете пользователя и д.р.

    По документации выводится вроде все просто get_field() или the_field(). Но вывести не получается... Добавляю в сответсвующие файлы, например cart/cart.php в нужное место

    <?php the_field('afflink_to_product'); ?>

    Выодится пустота..

    В function может что то добавлять еще нужно?

    В php ноль почти... Поэтому если можно подробнее)
     
    Последнее редактирование: 5 июн 2016
  2. alextwinner

    alextwinner

    Сообщения:
    22
    Симпатии:
    2
    Баллы:
    3
    понял, почему не выводится на странице корзины... Конечно, потому что не понятно к какому посту (товару) это поле относится.
    вот тут дока на русском и примеры вывода http://acf.wp-book.ru/primery-koda/

    Только как это применить в моем случае?
    Вот кусок кода файла cart/cart.php . Тут выводится название товара и ссылка на него. А как сделать что бы выводилось мое произвольное поле

    afflink_to_product ?

    Код:
            <?php
            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_cart_item_visible', true, $cart_item, $cart_item_key ) ) {
                    ?>
                    <tr class="<?php echo esc_attr( apply_filters( 'woocommerce_cart_item_class', 'cart_item', $cart_item, $cart_item_key ) ); ?>">
    
                        <td class="product-remove">
                            <?php
                                echo apply_filters( 'woocommerce_cart_item_remove_link', sprintf(
                                    '<a href="%s" class="remove" title="%s" data-product_id="%s" data-product_sku="%s">&times;</a>',
                                    esc_url( WC()->cart->get_remove_url( $cart_item_key ) ),
                                    __( 'Remove this item', 'woocommerce' ),
                                    esc_attr( $product_id ),
                                    esc_attr( $_product->get_sku() )
                                ), $cart_item_key );
                            ?>
                        </td>
    
     
  3. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    552
    Баллы:
    113
    Примерно так
    PHP:
    <?php  the_field('afflink_to_product',$product_id); ?>
     
    Последнее редактирование: 5 июн 2016
    • Нравится Нравится x 1
    • Полезно Полезно x 1
  4. alextwinner

    alextwinner

    Сообщения:
    22
    Симпатии:
    2
    Баллы:
    3
    searchingman, тоже не выводится. пустота
     
  5. searchingman

    searchingman Местный

    Сообщения:
    1.634
    Симпатии:
    552
    Баллы:
    113
    Приведите Ваш исходный код шаблона, которым выводите поле.
    Желательно показать настройки поля в административной части.
     
    • Нравится Нравится x 1
  6. alextwinner

    alextwinner

    Сообщения:
    22
    Симпатии:
    2
    Баллы:
    3
    пока не понял как, но еще раз все передалал и заработало:)
    Спасибо!!
     
    • Нравится Нравится x 2
  7. alextwinner

    alextwinner

    Сообщения:
    22
    Симпатии:
    2
    Баллы:
    3
    подскажите еще плиз как будет правильно вот в таком куске кода вывести мое произвольное поле afflink_to_product
    файл /woocommerce/templates/cart/cart.php
    в этом куске выводится Название товара с сылкой на карточку товара
    а мне нужно что бы вместо ссылки выводилось мое поле afflink_to_product
    т.е. в html вот так <a href="afflink_to_product">%s</a>

    PHP:
                        <td class="product-name" data-title="<?php _e'Product''woocommerce' ); ?>">
                            <?php
                                
    if ( ! $_product->is_visible() ) {
                                    echo 
    apply_filters'woocommerce_cart_item_name'$_product->get_title(), $cart_item$cart_item_key ) . '&nbsp;';
                                } else {
                                    echo 
    apply_filters'woocommerce_cart_item_name'sprintf'<a href="%s">%s</a>'esc_url$_product->get_permalink$cart_item ) ), $_product->get_title() ), $cart_item$cart_item_key );
                                }

                                
    // Meta data
                                
    echo WC()->cart->get_item_data$cart_item );

                                
    // Backorder notification
                                
    if ( $_product->backorders_require_notification() && $_product->is_on_backorder$cart_item['quantity'] ) ) {
                                    echo 
    '<p class="backorder_notification">' esc_html__'Available on backorder''woocommerce' ) . '</p>';
                                }
                            
    ?>
                        </td>
    и тоже самое вот в этом куске
    файл woocommerce/templates/order/order-details-item.php

    PHP:
        <td class="product-name">
            <?php
                $is_visible 
    $product && $product->is_visible();

                echo 
    apply_filters'woocommerce_order_item_name'$is_visible sprintf'<a href="%s">%s</a>'get_permalink$item['product_id'] ), $item['name'] ) : $item['name'], $item$is_visible );
                echo 
    apply_filters'woocommerce_order_item_quantity_html'' <strong class="product-quantity">' sprintf'&times; %s'$item['qty'] ) . '</strong>'$item );

                
    do_action'woocommerce_order_item_meta_start'$item_id$item$order );

                
    $order->display_item_meta$item );
                
    $order->display_item_downloads$item );

                
    do_action'woocommerce_order_item_meta_end'$item_id$item$order );
            
    ?>
        </td>
    п.с.
    суть должна быть одна и та же для этих кусоков, поэтому можно на примере любого из них
     
  8. alextwinner

    alextwinner

    Сообщения:
    22
    Симпатии:
    2
    Баллы:
    3
    для карты - файл /woocommerce/templates/cart/cart.php (верхний код) вот такая конструкция сработала:

    PHP:
    $field get_field('afflink_to_product',$product_id)
    целиком

    PHP:
                            <?php
                                
    if ( ! $_product->is_visible() ) {
                                    echo 
    apply_filters'woocommerce_cart_item_name'$_product->get_title(), $cart_item$cart_item_key ) . '&nbsp;';
                                } else {
                                    echo 
    apply_filters'woocommerce_cart_item_name'sprintf'<a href="%s">%s</a>'$field get_field('afflink_to_product',$product_id), $_product->get_title() ), $cart_item$cart_item_key );
                                }

                                
    // Meta data
                                
    echo WC()->cart->get_item_data$cart_item );

                                
    // Backorder notification
                                
    if ( $_product->backorders_require_notification() && $_product->is_on_backorder$cart_item['quantity'] ) ) {
                                    echo 
    '<p class="backorder_notification">' esc_html__'Available on backorder''woocommerce' ) . '</p>';
                                }
                            
    ?>
    а для деталей заказа (после оформления) файл woocommerce/templates/order/order-details-item.php
    так не работает!

    PHP:
            <?php
                $is_visible 
    $product && $product->is_visible();

                echo 
    apply_filters'woocommerce_order_item_name'$is_visible sprintf'<a href="%s">%s</a>'$field get_field('afflink_to_product',$product_id), $item['name'] ) : $item['name'], $item$is_visible );
                echo 
    apply_filters'woocommerce_order_item_quantity_html'' <strong class="product-quantity">' sprintf'&times; %s'$item['qty'] ) . '</strong>'$item );

                
    do_action'woocommerce_order_item_meta_start'$item_id$item$order );

                
    $order->display_item_meta$item );
                
    $order->display_item_downloads$item );

                
    do_action'woocommerce_order_item_meta_end'$item_id$item$order );
            
    ?>
    срабатывает только если явно указать ID товара вместо $product_id

    почему может не подгружаться ID?