Как получить название продукта woocommerce по контактной форме 7

Я установил веб-сайт с "Контактной формой 7" и "Woo Commerce", и на странице магазина, где отображаются все продукты, мне удалось добавить кнопку со следующим кодом "Скачать брошюру":

add_action('woocommerce_after_shop_loop_item', 'rox_loop_download_button', 5);
function rox_loop_download_button() {
global $product;
$product_id = $product->get_id();
 { ?>
        <div class="button-pdb">
<a href="">download brochure</a></div>
<?php }
}

Теперь я хочу, чтобы пользователь отправлял форму запроса, чтобы взять название продукта по умолчанию.

Я пробовал следующий код, но он работает только на одной странице продукта: functions.php

    add_filter( 'woocommerce_product_tabs', 'product_enquiry_tab' );
    function product_enquiry_tab( $tabs ) {

    $tabs['test_tab'] = array(
        'title'     => __( 'Enquire about Product', 'woocommerce' ),
        'priority'  => 50,
        'callback'  => 'product_enquiry_tab_form'
    );

    return $tabs;

}
function product_enquiry_tab_form() {
    global $product;
    //If you want to have product ID also
    //$product_id = $product->id;
    $subject    =   "Enquire about ".$product->post->post_title;

    echo "<h3>".$subject."</h3>";
    echo do_shortcode('[contact-form-7 id="19" title="Contact form 1_copy"]'); //add your contact form shortcode here ..

    ?>

    <script>
    (function($){
        $(".product_name").val("<?php echo $subject; ?>");
    })(jQuery);
    </script>   
    <?php   
}
    ?>

И код для "контактной формы 7":

<p>Your Name (required)<br />
        [text* your-name] </p>

    <p>Your Email (required)<br />
        [email* your-email] </p>

    <p class="product_subject">Subject<br />
        [text your-subject class:product_name] </p>

    <p>Your Message<br />
        [textarea your-message] </p>

    <p>[submit "Send"]</p> 

https://imgur.com/a/wciND2M

2 ответа

Я использую этот один из моих сайтов. Мне не нужен ни другой плагин, ни JavaScript, я просто отправляю название продукта Woocommerce в качестве параметра GET на страницу формы контакта. Смотрите https://contactform7.com/getting-default-values-from-the-context/

Шаг 1

Отправьте название продукта на контактную форму.
В подкаталоге моей темы woocommerce/single-product/add-to-cart/simple.php я изменил кнопку добавления в корзину на кнопку запроса. Идентификатор продукта и название продукта добавляются в URL в качестве параметров URL. Важно: атрибут name должен совпадать с полем, указанным в контактной форме.

<button type="submit" value="<?php echo esc_attr( $product->get_id() ); ?>"
        class="single_add_to_cart_button button alt"><?php echo _e( 'Request', 'framework' ); ?></button>
<input type="hidden" name="product-id" value="<?php echo absint( $product->get_id() ); ?>" />
<input type="hidden" name="contact-subject" value="<?php echo esc_html( $product->get_title() ) ?>" />

Шаг 2

Получить и использовать название продукта в форме договора 7.

Я настроил свою форму (в бэкэнде по адресу /wp-admin/admin.php?page=wpcf7) следующим образом (по умолчанию:get - это то, что извлекает значение из параметра URL):

<div>
    [hidden product-id default:get]
    [text* contact-subject default:get id:subject class:required placeholder "Betreff Ihrer Nachricht"]
</div>


Так что URL моей контактной страницы выглядит так:

https://www.***.de/contact/?product-id=603&contact-subject=productTitle#contactform


Возможно, вы сможете адаптировать мой подход и изменить его под свои нужды. (В настоящее время мне не нужна функция добавления в корзину.)

Установить плагин:

  • Плагин контактной формы 7 (CF7)
  • Контактная форма 7 Плагин динамического расширения текста

Добавить код в контактную форму

<label>Product Name
[dynamictext product-name "CF7_get_post_var key='title'"]</label>

Пользовательский код

Добавьте код в function.php в вашей теме.

Примечание: пожалуйста, измените шорткод вашего CF7.

add_filter('the_content', 'dc_cf7_form_to_all_products');
function dc_cf7_form_to_all_products($content) {
    if ( class_exists( 'woocommerce' ) && is_product() && is_main_query() ) {  // Check suggested by: https://pippinsplugins.com/playing-nice-with-the-content-filter/
        return $content . '[contact-form-7 id="54" title="Demo Form"]';
    }

    return $content;
}
Другие вопросы по тегам