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

To do it With ACF pro plugin and without other extra plugins.

  1. Create a relation field ( example: contact_form )
  2. add the below code into your page loop:

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

Create ACF relation field

于 2018-04-15T07:51:22.740 に答える
3

上記のコメントで説明した手法を使用して、この問題を解決できました。「Run filter "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 に答える
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 に答える