4

我希望我的用户能够将Contact Form 7短代码放入 Wordpress 编辑器的自定义字段中。我已经使用ACF创建了自定义字段,并且可以将值拉到页面上,但是当我尝试将其包含在简码中时,它会返回 404。

这段代码:

<?php echo do_shortcode(get_field('contact_form_shortcode')); ?>

回报:

[contact-form-7 404 "Not Found"]

如果我用这样的值创建一个变量:

<?php
 $formCode = get_field('contact_form_shortcode');
 echo $formCode;
?> 

回声返回:

[contact-form-7 id="473" title="Learn More Form"]

但是在将该值放入 echo do_shortcode 函数列表后,我得到了相同的 404:

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

我错过了什么?

4

7 回答 7

7

使用 ACF pro 插件而不需要其他额外的插件来做到这一点。

  1. 创建关系字段(示例contact_form:)
  2. 将以下代码添加到您的页面循环中:

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

创建 ACF 关系字段

于 2018-04-15T07:51:22.740 回答
3

通过使用我在上面的评论中讨论的技术,我能够解决这个问题。通过使用设置为“运行过滤器“the_content”的 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; 
 ?>
于 2013-01-17T20:10:35.207 回答
2

除了使用 WYSIWYG 字段,您只需在字段的格式设置下将文本字段设置为“将 HTML 转换为标签”。这将停止来自 CF7 的 404 错误并正确处理表单。WYSIWYG 字段往往难以控制不良用户输入。

于 2015-07-21T15:14:06.040 回答
1

这是我的解决方案:

创建一个“帖子对象”类型的字段,该字段将返回帖子 ID。此字段的按帖子类型过滤器应设置为“联系表格”,按分类过滤器留空。

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

<?php $contact_form = get_field('contact_form'); ?>

HTML:

<div class="col-12 col-md-8 offset-md-2">
  <?php echo do_shortcode('[contact-form-7 id="'. $contact_form .'"]'); ?>
</div>

acf 字段截图

于 2019-05-13T01:47:21.680 回答
0

另一个解决方案:

1) 安装https://github.com/taylormsj/acf-cf7

安装

> 1 Copy the acf-cf7 folder into your wp-content/plugins folder
> 2 Activate the Contact Form 7 plugin via the plugins admin page
> 3 Create a new field via ACF and select the Contact Form 7 type
> 4 Please refer to the description for more info regarding the field type settings

2)将以下代码插入模板:

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

这适用于在模态或弹出窗口中创建联系表单 7,同一页面上的多个表单。

于 2016-05-26T04:48:20.010 回答
0

要按照您的要求将 CF7 简码(或任何其他生成的简码)粘贴到 ACF 字段中,只需使用 @armadadrive 解决方案,这正是问题所在并且有效。

  1. 创建具有某个名称的 ACFtext字段,例如hero_form
  2. 把你粘贴shortcode进去
  3. 像这样显示内容<?php echo do_shortcode(get_field('hero_form')); ?>

谢谢@armadadrive

于 2018-09-27T07:03:36.070 回答
0

在这里您可以尝试请检查以下短代码的代码:

<?php echo do_shortcode(get_field('YourACFfieldNameHere')); ?>

我在我的网站上尝试过,它可以工作。

于 2021-07-15T14:43:07.190 回答