将一些 WooCommerce 产品数据传递给 Contact Form 7 查询表
Pass some WooCommerce product data to Contact Form 7 enquiry form
在 回答我之前的回答后,我可以在我的 WooCommerce 商店的“缺货”产品上显示使用 Contact Form 7 插件制作的表格。它适用于简单和可变产品(产品变体)。
现在我想将一些产品数据传递给这个查询联系表,就像在这个答案中一样:
.
我想传递产品名称(以及变体属性“Color”值,在我的母语中是“Renk”)。我尝试了所有可能的方法,但没有成功。
任何帮助将不胜感激。
由于 Contact Form 7 允许隐藏输入字段,您将在表单中为产品数据设置一个隐藏输入字段(在提交按钮之后),例如:
<label> Your Name (required)
[text* your-name] </label>
<label> Your Email (required)
[email* your-email] </label>
<label> Your Message
[textarea* your-message] </label>
[submit "Send"]
[hidden your-product]
然后您将使用例如:
将其添加到邮件中
Product Enquiry: [your-product]
现在 jQuery 会将产品名称 (和属性颜色值) 复制到此隐藏字段。用以下内容替换所有现有的相关代码:
add_action( 'woocommerce_single_product_summary', 'add_product_outofstock_contact_form', 30, 2 );
function add_product_outofstock_contact_form() {
global $product;
$contact_form = do_shortcode('[contact-form-7 id="14880" title="Fiyat Sorunuz"]'); // Here the contact form shortcode
if( $product->is_type('variable') ) {
echo '<div class="outofstock-form" style="display:none">' . $contact_form . '</div>';
} elseif( ! $product->is_in_stock() ) {
echo $contact_form;
?>
<script type="text/javascript">
jQuery(function($) {
var id = <?php echo $product->get_id(); ?>,
name = '<?php echo $product->get_name(); ?>';
$('input[name="your-product"]').val(name+' ('+id+')');
});
</script>
<?php
}
}
add_filter( 'woocommerce_available_variation', 'filter_available_variation_attributes', 10, 3 );
function filter_available_variation_attributes( $data, $product, $variation ){
if ( ! $data['is_in_stock'] ) {
$attribute = 'Color';
$term_name = $variation->get_attribute($attribute);
$data['name'] = $product->get_name();
$data['name'] .= $term_name ? ' - ' . $term_name : '';
}
return $data;
}
add_action('woocommerce_after_variations_form', 'outofstock_product_variation_js');
function outofstock_product_variation_js() {
?>
<script type="text/javascript">
jQuery(function($) {
var contactFormObject = $('.outofstock-form'),
addToCartButtonObj = $('.woocommerce-variation-add-to-cart'),
hiddenInputFieldObj = $('input[name="your-product"]');
$('form.variations_form').on('show_variation', function(event, data) { // On selected variation
if ( ! data.is_in_stock ) {
addToCartButtonObj.hide('fast');
contactFormObject.show('fast');
hiddenInputFieldObj.val(data.name+' ('+data.variation_id+')');
} else {
addToCartButtonObj.show('fast');
contactFormObject.hide('fast');
hiddenInputFieldObj.val('');
}
}).on('hide_variation', function() { // Not on selected variation
addToCartButtonObj.show('fast');
contactFormObject.hide('fast');
hiddenInputFieldObj.val('');
});
});
</script>
<?php
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
注意:该代码适用于简单产品和可变产品(产品变体)。
相关:
在
现在我想将一些产品数据传递给这个查询联系表,就像在这个答案中一样:
我想传递产品名称(以及变体属性“Color”值,在我的母语中是“Renk”)。我尝试了所有可能的方法,但没有成功。
任何帮助将不胜感激。
由于 Contact Form 7 允许隐藏输入字段,您将在表单中为产品数据设置一个隐藏输入字段(在提交按钮之后),例如:
<label> Your Name (required)
[text* your-name] </label>
<label> Your Email (required)
[email* your-email] </label>
<label> Your Message
[textarea* your-message] </label>
[submit "Send"]
[hidden your-product]
然后您将使用例如:
将其添加到邮件中Product Enquiry: [your-product]
现在 jQuery 会将产品名称 (和属性颜色值) 复制到此隐藏字段。用以下内容替换所有现有的相关代码:
add_action( 'woocommerce_single_product_summary', 'add_product_outofstock_contact_form', 30, 2 );
function add_product_outofstock_contact_form() {
global $product;
$contact_form = do_shortcode('[contact-form-7 id="14880" title="Fiyat Sorunuz"]'); // Here the contact form shortcode
if( $product->is_type('variable') ) {
echo '<div class="outofstock-form" style="display:none">' . $contact_form . '</div>';
} elseif( ! $product->is_in_stock() ) {
echo $contact_form;
?>
<script type="text/javascript">
jQuery(function($) {
var id = <?php echo $product->get_id(); ?>,
name = '<?php echo $product->get_name(); ?>';
$('input[name="your-product"]').val(name+' ('+id+')');
});
</script>
<?php
}
}
add_filter( 'woocommerce_available_variation', 'filter_available_variation_attributes', 10, 3 );
function filter_available_variation_attributes( $data, $product, $variation ){
if ( ! $data['is_in_stock'] ) {
$attribute = 'Color';
$term_name = $variation->get_attribute($attribute);
$data['name'] = $product->get_name();
$data['name'] .= $term_name ? ' - ' . $term_name : '';
}
return $data;
}
add_action('woocommerce_after_variations_form', 'outofstock_product_variation_js');
function outofstock_product_variation_js() {
?>
<script type="text/javascript">
jQuery(function($) {
var contactFormObject = $('.outofstock-form'),
addToCartButtonObj = $('.woocommerce-variation-add-to-cart'),
hiddenInputFieldObj = $('input[name="your-product"]');
$('form.variations_form').on('show_variation', function(event, data) { // On selected variation
if ( ! data.is_in_stock ) {
addToCartButtonObj.hide('fast');
contactFormObject.show('fast');
hiddenInputFieldObj.val(data.name+' ('+data.variation_id+')');
} else {
addToCartButtonObj.show('fast');
contactFormObject.hide('fast');
hiddenInputFieldObj.val('');
}
}).on('hide_variation', function() { // Not on selected variation
addToCartButtonObj.show('fast');
contactFormObject.hide('fast');
hiddenInputFieldObj.val('');
});
});
</script>
<?php
}
代码进入活动子主题(或活动主题)的 functions.php 文件。已测试并有效。
注意:该代码适用于简单产品和可变产品(产品变体)。
相关: