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

ReL*_*eaf 4 php wordpress contact-form

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

这段代码:

<?php echo do_shortcode(get_field('contact_form_shortcode')); ?>
Run Code Online (Sandbox Code Playgroud)

返回:

[contact-form-7 404 "Not Found"]
Run Code Online (Sandbox Code Playgroud)

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

<?php
 $formCode = get_field('contact_form_shortcode');
 echo $formCode;
?> 
Run Code Online (Sandbox Code Playgroud)

回声返回:

[contact-form-7 id="473" title="Learn More Form"]
Run Code Online (Sandbox Code Playgroud)

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

<?php echo do_shortcode($formCode); ?>
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

Abo*_*asy 6

使用 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; ?>
    
    Run Code Online (Sandbox Code Playgroud)

创建 ACF 关系字段


ReL*_*eaf 2

我能够通过使用我在上面的评论中讨论的技术来解决这个问题。通过使用设置为“运行过滤器“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; 
 ?>
Run Code Online (Sandbox Code Playgroud)