Как получить название продукта 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>
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;
}