【问题标题】:How to get woocommerce product title by contact form 7如何通过联系表 7 获取 woocommerce 产品标题
【发布时间】:2019-01-30 15:18:12
【问题描述】:

我已经设置了一个带有“联系表 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

【问题讨论】:

  • 您到底需要什么?
  • 在商店页面上,当您显示所有产品时,我添加了一个“下载”按钮并将该按钮与 CF7 链接,当提交表单时,我希望表单在电子邮件中显示产品名称我得到了
  • 您可以使用jQuery 来完成这项工作。使用隐藏的表单字段并将标题设置为特定字段。然后您可以从Mail Config 设置该值。
  • 在一页上我显示了多个产品,我使用一个按钮和一个联系表,如果我这样做 [_post_title] 或 [_post_url] 它会给我页面的 URL 或名称,而不是提交表单的产品名称我在商店页面而不是产品单页上使用它

标签: php wordpress woocommerce contact-form-7


【解决方案1】:

安装插件:

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

【讨论】:

  • 在一个页面上我显示了多个产品,我使用一个按钮和一个联系表,如果我这样做 [_post_title] 或 [_post_url] 它会给我页面的 url 或名称,而不是提交表单的产品名称我在商店页面而不是产品单页上使用它
  • 请检查最适合的第二种方式
  • 我见过那个解决方案,但它是针对产品单页的他们只需在商店页面上按一个按钮,而无需访问产品
  • @Fisnik 我已经完美地运行了上面的代码。您的要求已满。
  • 它运行良好,但它给我的是商店页面名称,而不是产品页面名称,如果你能给我你的电子邮件,我会给你一些图片和视频,这样你就可以看到我想要什么
【解决方案2】:

我正在使用我的网站之一。我不需要其他插件或 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>


所以我的联系页面的 URL 如下所示:

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


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

【讨论】:

  • 这段代码可以运行到某个地方。我在 functions.php 但我无法在联系表格上显示这个:(
  • 不不 Fisnek,我想你误解了我的方法。我会改进我的答案。
  • 您的答案可以正常工作,但我只需要一种方法,以便此功能可以在我的 CF7 后端运行
  • @jasie 您的方法是正确的,但需要在单个页面中添加一个联系表单,并且该联系表单有一个文本字段,该文本已经是当前产品标题的字段。这是目标。
  • 好吧,您的联系表单中的字段有不同的名称:例如'your-subject' 代替我的 'contact-subject'。
猜你喜欢
  • 2016-12-26
  • 2015-06-05
  • 2015-05-03
  • 1970-01-01
  • 2015-10-07
  • 2021-12-06
  • 2013-11-14
  • 2016-05-11
  • 1970-01-01
相关资源
最近更新 更多