13

複数のフォームがあるワードプレス サイトで Contact Form 7 を使用しています。あるフォームを他のフォーム アクション URL とは異なるフォーム アクション URL に誘導する必要があります。

前のスレッドに対する以下の返信を見つけましたが、どうすればよいかわかりません。「追加設定」に含める必要がある正確なコードと、functions.php のコードがどのようになるかを誰かが指定できますか?

ご協力いただきありがとうございます!


diff から返信します。よくわからないスレッド...

*はい、このフィルター フック wpcf7_form_action_url を使用して、フォームの「アクション」属性を変更する必要があります。(コードは何でしょうか?)フックをテーマの functions.php に追加してから、ASP ページでフォーム データを処理するだけです。(コード?) *


4

4 に答える 4

38

あなたは PHP コードにまったく慣れていないので、Wordpress API 内でのコーディングについて簡単に説明します。

まず、関数と変数の違いを知っておく必要があります。変数は、任意の値を表すための単一のエンティティです。値は何でもかまいません。数字、誰かの名前、または複雑なデータ。

関数は、一連のアクションを実行して、変数を送り返す (または返す) か、特定の変数を変更するものです。

<?php
$a = 1; //Number
$b = 'b'; //String *note the quotes around it*
$c = my_function(); //Call to a function called my_function
echo $a; //1
echo $b; //b
echo $c; //oh, hello
function my_function()
{
    return 'oh, hello';
}
?>

Wordpress は、イベント駆動型プログラミングスタイルに基づいて、独自のアクションおよびフィルター システムを大まかに利用しています。

これが意味することは、Wordpress が特定のイベントの発生を「リッスン」し、イベントが発生すると、そのイベントに関連付けられた関数 (コールバックとも呼ばれます) を実行することです。これらは「アクション」と「フィルター」です。違いは何ですか?

アクションは何かを行う関数です
フィルターは何かを返す関数です

では、これはすべてあなたの問題にどのように適合しますか?

Contact Form 7 には独自のフィルターがあり、フォームから情報が送信される URL を返します。

それでは、フィルターフックの基本を見てみましょう

add_filter('hook_name', 'your_filter');
  1. add_filter は、特定のイベントをリッスンする必要があることを Wordpress に伝える関数です。
  2. 「hook_name」は、Wordpress がリッスンしているイベントです。
  3. 「your_filter」は、「hook_name」イベントが発生したときに呼び出される関数またはコールバックです。

前のスレッドへのリンクには、使用する必要があるフック名は「wpcf7_form_action_url」であると記載されています。つまり、add_filter を呼び出し、'hook_name' を 'wpcf7_form_action_url' に設定し、'your_filter' をコールバックとして設定する関数の名前に設定するだけです。

それが完了したら、'your_filter' の代わりに入力したものと一致する名前の関数を定義し、フォーム アクションを変更するための URL を返すことを確認するだけです。

ここで問題が発生します。これにより、すべてのフォームが変更されます。しかし、まず最初に、自分で動作するコードを取得できるかどうかを確認してください。functions.phpにコードを記述して、結果をお知らせください。

アップデート:

これほど早く入手できたという事実は素晴らしいことであり、これにどれだけの研究努力を注いでいるかを示しています。

これをすべてfunctions.phpに入れます

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');
function wpcf7_custom_form_action_url()
{
    return 'wheretopost.asp';
}

前に述べたように、それはすべてのフォームに影響します。これが特定のページのフォームにのみ影響することになっている場合は、次のようにすることができます。

add_filter('wpcf7_form_action_url', 'wpcf7_custom_form_action_url');
function wpcf7_custom_form_action_url($url)
{
    global $post;
    $id_to_change = 1;
    if($post->ID === $id_to_change)
        return 'wheretopost.asp';
    else
        return $url;
}

$id_to_change の値を、影響を与えようとしている投稿/ページの ID を表す数値に変更するだけです。したがって、たとえば、アクション URL を変更したい概要ページがある場合、管理ダッシュボードで概要ページの ID 番号を見つけることができます (ページ エディターに移動し、ID の URL を調べるだけです)。番号) を変更し、1 を ID 番号に変更します。

これがお役に立てば幸いです。幸運を祈ります。

于 2013-01-06T04:00:01.813 に答える