如何通过联系表7

时间:2019-01-29 09:54:34

标签: php wordpress woocommerce contact-form-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 个答案:

答案 0 :(得分:1)

安装插件:

  • 联系Form 7(CF7)插件
  • 联系Form 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;
}

答案 1 :(得分:1)

我正在使用我的网站之一。我不需要其他插件也不需要JavaScript,我只是将Woocommerce产品标题作为GET参数发送到联系表单页面。 参见https://contactform7.com/getting-default-values-from-the-context/

第1步

将产品标题发送到联系表。
在主题子目录woocommerce / single-product / add-to-cart / simple.php中,我将“添加到购物车”按钮更改为“请求”按钮。产品ID和产品标题作为URL参数添加到URL。重要提示:“名称”属性必须与联系表单中配置的字段相同。

<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>


所以我的联系页面的网址如下:

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


也许您可以调整我的方法并根据需要进行修改。 (我目前不需要添加到购物车功能。)