如何将相同的联系人表单添加到多个WordPress站点,并在一个地方或数据库中捕获回复?

时间:2011-02-06 作者:John Bates

我拥有一个由100多个Wordpress网站组成的网络。所有网站都是Wordpress的独立安装,并且位于不同的服务器上。我想

创建一个联系人表单,将其显示在我所有Wordpress网站的侧栏中,并在一个数据库中捕获回复(而不是收到100封电子邮件)

我知道有无数个用于创建联系人表单的插件,但似乎没有一个能够解决这种情况。任何帮助都将不胜感激。此外,如果这种情况超出了本网站的范围,我不反对雇佣他人来帮助解决。

祝你一切顺利,JB

3 个回复
最合适的回答,由SO网友:Bainternet 整理而成

我能想到的最简单的方法是使用一个插件,它通过以下快捷代码创建表单contact form 7 例如,我将把它分解为简单的步骤。

在您的主站点上创建表单,或者在您希望管理表单数据的任何站点上创建表单。

  • Create a page template 没有页眉或页脚,只有一个简单的循环和调用the_content.

    创建一个新页面,将表单的短代码添加到其中,并将模板设置为新页面模板。

    获取该页面的URL并为其创建iframe。

    在每个要显示表单的站点上,只需将Iframe代码添加到侧栏文本小部件。

    这应该可以做到。

    哦,等等,你可能需要添加联系人表单7的Javascripts和css,我刚刚再次阅读了你的问题,你正在寻找将这些表单保存到数据库中,由于这个插件本身并没有保存到数据库中,你可以使用一个名为Contact Form 7 to Database 或者一起使用不同的表单插件。

    希望这有帮助

  • SO网友:Hitesh Rustagi

    您可以使用PHp/HTML开发表单,并将表单存储在javascript函数中,然后测试表单是否提交到数据库文件夹。

    jsut通过向网站编号中添加脚本代码来调用javascript,所有提交都将进入一个数据库

    您可以使用此数据库将表单查询和响应传输到Crm

    SO网友:Maxime Bellefleur

    好吧,对于任何在这里寻求解决方案的人来说。

    以下是对我有用的步骤。请注意,这是一个黑客,但它的工作。它是使用CF7和ACF完成的。

    在主站点上创建表单

    function get_general_field($variable) {
      if (get_current_blog_id() != 1) {
        switch_to_blog(1);
      }
      $custom_fields = do_shortcode(get_field($variable, 17284));
    
      if (ms_is_switched()) {
        restore_current_blog();
      }
      return $custom_fields;
    } 
    
    现在为您的主站点创建一个通用ACF字段组(例如,仅在站点1上显示,其中包含一个用于“通用表单”的文本字段

    您将在主站点上创建一个私人页面,称之为“常规字段”,您将在其中粘贴CF7中的短代码。

    现在,在主题文件中,只需调用get\\u general\\u字段(“field\\u NAME”)。

    此时,将显示表单,但您需要添加css和js以进行ajax验证。

       if( class_exists( \'WPCF7\' ) ) {
           function yuna_design_manually_enqueue_wpcf7_scripts() { 
           global $post;
           if( is_single() || strpos( $post->post_name, \'group\' ) ) {
             if( function_exists( \'wpcf7_enqueue_scripts\' ) )
               wpcf7_enqueue_scripts();
              if( function_exists( \'wpcf7_enqueue_styles\' ) )
               wpcf7_enqueue_styles();
             }
          }
        add_filter( \'wpcf7_load_js\', \'__return_false\' ); // Disable CF7 Js
        add_filter( \'wpcf7_load_css\', \'__return_false\' ); // Disable CF7 CSS
        add_action( \'wp_enqueue_scripts\', \'yuna_design_manually_enqueue_wpcf7_scripts\' );
      }
    
    现在,一切都正常了,但你的控制台中有两个错误,还有一个循环表单,它从不回叫子网站(主站点1除外)。这是因为它正在调用子网站进行验证,并且由于您没有具有正确id的表单,它将返回并出错。

    (经过一些思考和测试,我认为这可能是可选的)您需要修改CF7中的两个文件(我使用的是版本5.1.7)。第一个是:contact-form-7/includes/restapi。在打开wpcf7\\u rest\\u api\\u init(){之后添加以下代码:

      if (get_current_blog_id() != 1) {
         switch_to_blog(1);
      }
    
    。。。其中1是我的主站点id。。。

    另外,不要忘记在该函数的末尾(在结束“}”之前)添加以下代码:

    if (ms_is_switched()) {
        restore_current_blog();
    }
    
    您需要在contact-form-7/includes/js/scripts中查找“wpcf7.getId($form)”的两个实例。js。您将发现一个动态链接验证,您需要将其设置为静态并指向主站点url。基本上:

    url:wpcf7。apiSettings。getRoute(“/联系表单/”+wpcf7.getId($表单)+“/反馈”),

    需要如下所示:

    url: \'HTTPS://YOURWEBSITEURL.COM/wp-json/contact-form-7/v1/contact-forms/\' + wpcf7.getId( $form ) + \'/feedback\',
    
    瞧,在子网站中测试表单,ajax错误应该可以正常工作。在wordpress设置中,您现在有了一个可用于多个站点的表单。

    请注意,这是一个非常临时的解决方案,是为我的一个项目所做的一次黑客攻击,如果能有一个对CF7的多站点支持,那就太好了,因为这并不是插件作者要做的一个大调整。

    请随时评论并添加此解决方案。我在网上看了很长时间,没有发现任何东西工作正常。

    干杯

    Maxime Bellefluer(Maxime Bellefluer)

    小型企业Wordpress积分器www。yunadesign。com公司

    结束

    相关推荐

    How do you debug plugins?

    我对插件创作还很陌生,调试也很困难。我用了很多echo,它又脏又丑。我确信有更好的方法可以做到这一点,也许是一个带有调试器的IDE,我可以在其中运行整个站点,包括插件?