Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/245.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 使用高级自定义字段和联系表单7显示表单_Php_Wordpress_Contact Form - Fatal编程技术网

Php 使用高级自定义字段和联系表单7显示表单

Php 使用高级自定义字段和联系表单7显示表单,php,wordpress,contact-form,Php,Wordpress,Contact Form,我希望我的用户能够在Wordpress编辑器的自定义字段中输入一个快捷码。我已经使用创建了自定义字段,我可以将值拉到页面上,但是当我尝试将其包含在短代码中时,它返回404 此代码: <?php echo do_shortcode(get_field('contact_form_shortcode')); ?> 如果我用如下值创建一个变量: <?php $formCode = get_field('contact_form_shortcode'); echo $formCo

我希望我的用户能够在Wordpress编辑器的自定义字段中输入一个快捷码。我已经使用创建了自定义字段,我可以将值拉到页面上,但是当我尝试将其包含在短代码中时,它返回404

此代码:

<?php echo do_shortcode(get_field('contact_form_shortcode')); ?>
如果我用如下值创建一个变量:

<?php
 $formCode = get_field('contact_form_shortcode');
 echo $formCode;
?> 
但在将该值放入echo do_shortcode函数列表后,我得到了相同的404,如下所示:

<?php echo do_shortcode($formCode); ?>


我遗漏了什么?

通过使用我在上面的评论中讨论的技术,我能够解决这个问题。通过使用设置为“运行过滤器”的WYSWIG字段,我能够以我想要的方式提取字段值。唯一的缺点是,除了表单快捷码之外,用户还可以在其中键入其他内容

这是我的最终代码:

<?php
    if (get_field('contact_form_shortcode')):
        echo get_field('contact_form_shortcode');
    else:
        echo do_shortcode('[contact-form-7 id="473" title="Learn More Form"]');
    endif; 
 ?>

不用所见即所得字段,只需在字段的格式设置下设置一个文本字段“将HTML转换为标记”。这将停止来自CF7的404错误并正确处理表单。WYSIWYG字段由于用户输入错误而难以控制。

另一种解决方案:

1) 安装

装置 2) 在模板中插入以下代码:

            <?php if( get_field('field_acf') ):
                 the_field('field_acf');
            endif; ?>

这适用于在同一页面上以模式或弹出式多个表单创建联系人表单7

使用ACF pro插件,而不使用其他额外插件

  • 创建关系字段(例如:
    联系人表单
  • 将以下代码添加到页面循环中:

    <?php $posts = get_field('contact_form');
       if( $posts ): 
         foreach( $posts as $p ): // variable must NOT be called $post (IMPORTANT) 
           $cf7_id= $p->ID;
           echo do_shortcode( '[contact-form-7 id="'.$cf7_id.'" ]' ); 
         endforeach;
       endif; ?>
    
    若要按照您的要求将CF7短代码(或任何其他生成的短代码)粘贴到ACF字段中,只需使用@armadadrive解决方案,这正是问题的核心所在,而且它是有效的

  • 用一些名称创建ACF
    text
    字段,例如
    hero\u表单
  • 将您的
    快捷码
    粘贴到其中
  • 显示这样的内容
  • 谢谢@armadadrive

    以下是我的解决方案:

    创建一个“Post对象”类型字段,该字段将返回Post ID。 此字段的按职位类型筛选应设置为“联系人表单”,按分类法筛选保留为空

    然后在页面模板中:(php)

    
    
    HTML:

    <div class="col-12 col-md-8 offset-md-2">
      <?php echo do_shortcode('[contact-form-7 id="'. $contact_form .'"]'); ?>
    </div>
    
    
    
    在标准Wordpress页面/帖子中使用快捷码时会发生什么?那它行吗?行。我还将短代码硬编码到模板中,但我的用户希望能够选择他们希望出现在该位置的表单。我的备份计划是使用所见即所得字段,然后让Wordpress自己执行短代码。但我希望避免这种情况,因为我的用户最终可以在其中放入他们想要的任何内容,这可能会变得混乱。如果您希望用户能够选择CF7表单,还可以将字段类型设置为“关系”,然后按联系人表单筛选为帖子类型。这将提供比手动粘贴短代码更好的后端体验。谢谢,我不认为这是我两年前发布此问题时的一个选项。我在尝试之前先搜索了一下,发现了这个问题,但是当我使用
    时,一个普通的ACF
    文本
    字段对我来说效果很好,所以这可能更“正确”现在。
                <?php if( get_field('field_acf') ):
                     the_field('field_acf');
                endif; ?>
    
    <?php $posts = get_field('contact_form');
       if( $posts ): 
         foreach( $posts as $p ): // variable must NOT be called $post (IMPORTANT) 
           $cf7_id= $p->ID;
           echo do_shortcode( '[contact-form-7 id="'.$cf7_id.'" ]' ); 
         endforeach;
       endif; ?>
    
    <?php $contact_form = get_field('contact_form'); ?>
    
    <div class="col-12 col-md-8 offset-md-2">
      <?php echo do_shortcode('[contact-form-7 id="'. $contact_form .'"]'); ?>
    </div>