Показать выбранный CF7 от администратора на отдельных продуктах Woocommerce - PullRequest
0 голосов
/ 03 сентября 2018

Для пользовательской темы WooCommerce я пытаюсь добиться следующего:

  1. Backend

    • Пользователь может выбрать, может ли продукт иметь форму запроса продукта
    • Пользователь может выбрать форму CF7 из одного продукта из выпадающего списка.
  2. Frontend

    • На странице одного продукта отображается стандартная информация о продукте, но если отмечена «форма запроса продукта», то на странице одного продукта отображается кнопка «Запрос продукта»
    • При нажатии этой кнопки отображается форма CF7, которая содержит атрибуты продукта (размеры, цвета и т. Д.)

Пример того, чего я пытаюсь достичь. http://www.blumeta.nl/tuininrichting/houtopslag/cortenstaal-houtopslag-500-x-hoogte-x-380mm

Я действительно не знаю, как подойти к этому. Кто-нибудь может мне помочь, как я могу этого достичь.

Вся помощь приветствуется.

1 Ответ

0 голосов
/ 03 сентября 2018

Код ниже будет отображаться в:

1) Backend настройки отдельного продукта на вкладке «Дополнительно» в поле выбора с различными формами CF7

enter image description here

Вы должны будете установить в первой функции ваши шорткоды форм CF7:

// Select field options: HERE set the CF7 shortcodes and labels in the array
function product_cf7_form_options() {
    $domain = 'woocommerce';

    return array(
        ''                          => __('Choose a form to enable it', $domain ), // Disabled choice
        '[contact-form-7 id="381"]' => __( 'First Form label name (or title)', $domain ),
        '[contact-form-7 id="382"]' => __( 'Second Form label name (or title)', $domain ),
    );
}

// Admin: Add custom field to product "advanced" setting tab
add_filter( 'woocommerce_product_options_advanced', 'add_field_product_options_advanced', 20, 1 );
function add_field_product_options_advanced() {
    $domain = 'woocommerce';

    echo '<div class="option_group">';

    woocommerce_wp_select( array(
        'id'      => '_enquiry_form',
        'label'   => __( 'Display a form (CF7)', $domain ),
        'desc_tip' => true,
        'description' => __( 'This will automatically insert your slider into the single product page', $domain ),
        'options'  => product_cf7_form_options(), // Get the array of options
    ) );

    echo '</div>';
}

// Admin: Save custom field value from product "advanced" setting tab
add_action( 'woocommerce_process_product_meta', 'save_product_custom_field', 20, 1 );
function save_product_custom_field( $post_id ){
    if( isset( $_POST['_enquiry_form'] ) )
        update_post_meta( $post_id, '_enquiry_form', $_POST['_enquiry_form'] );

}

2) Фронтенд страницы товара ниже добавить кнопку в корзину, выбранную форму CF7

enter image description here

Приведенный ниже код покажет кнопку «Запрос продукта». Если клиент нажмет на кнопку, он исчезнет, ​​отображая выбранную контактную форму 7:

// Frontend: Custom button, display the selected product enquiry form
add_action( 'woocommerce_after_add_to_cart_button', 'display_single_product_inquiry_form', 10 );
function display_single_product_inquiry_form(){
    global $product;

    // Get the selected form
    $enquiry_form = $product->get_meta('_enquiry_form');

    // Ouput button and hidden selected form hselected form
    if( ! empty($enquiry_form) ){
        echo '<div id="enquiry-form" style="padding-top:12px;">
        <p><a href="#" class="button">'.__("Product Enquiry", "woocommerce").'</a></p>
        <div style="display:none;">' . do_shortcode( "$enquiry_form" ) . '</div></div>';
    }

    // Jquery
    ?>
    <script type="text/javascript">
    jQuery(function($){
        var a = '#enquiry-form';

        // On click hide button and show form.
        $(a+' a').click(function(e){
            e.preventDefault();
            $(a+' > div').show();
            $(this).hide();
        });
    })
    </script>
    <?php
}

Весь код помещается в файл function.php вашей активной дочерней темы (или активной темы). проверено и работает.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...