2013-01-06 16 views
7

私は、複数のフォームを持つWordPressサイトでContact Form 7を使用しています。 あるフォームを他のフォームURLとは異なるフォームURLに誘導する必要があります。連絡先フォーム7のフォームアクションURLを変更するにはどうすればよいですか?

私は前のスレッドについて以下の返答を見つけましたが、私はそれについてどうやって行くのか分かりません。 誰かが "追加設定"に含める必要がある正確なコードを指定することができます とfunctions.phpのコードはどのようになりますか?

ありがとうございました!


reply from diff。私が完全に理解していないスレッドです...

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


+1

前のスレッドにリンクしますか?何を試しましたか?それはあなたがすでに書いているコードであなたを助けることができるが、それはあなたのためにそれをコード化しないでしょう – FelipeAls

+0

[何を試しましたか?](http://whathaveyoutried.com) – maiorano84

+0

私は謝罪します、私はWPで働くデザイナーです私の前に設置されたサイト。連絡先フォーム7が既にインストールされていて、いろいろなフォームが設​​定されているのを見て、私は新しいフォームを追加して電子メール通知を受け取りました。しかし、新しいフォームのデータは、デフォルトとは異なる.aspに送信する必要があります。オンラインで検索した後、CF7、add_filter(wpcf7_form_action_url、________)とfunction.phpファイルの追加設定にコードを追加することでこれを行うことができますか?私はURLをリダイレクトする方法に無数のPHPコードが見つかりましたが、フォームアクションのurlを変更するためのPHP上のものはありません...暗闇の中でのための謝罪:これ.. – user1102824

答えて

25

あなたがすべてでPHPコードに慣れていないので、私はあなたのWordpressのAPI内のコードでクラッシュコースのビットを与えるでしょう。

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

関数は、一連のアクションを実行して、return - 変数を返すか、または与えられた変数を変更するものです。

<?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のは緩くEvent-Driven Programmingスタイルに基づいた独自のアクションとフィルタシステムを利用しています。

これは、Wordpressが特定のイベントが発生するのを「リッスン」している場合、そのイベントにアタッチされた機能(コールバック)を実行することを意味します。これらは「アクション」と「フィルタ」です。違いは何ですか?

アクションもの
フィルタを行う機能は、どのように、これはすべてのあなたの問題に収まらないもの

を返す関数されていますか?

お問い合わせフォーム7には、情報がフォームによって送信される場所のURLを返す独自のフィルタがあります。

だからFilter Hook

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にコードを書き、それがどのように判明したかをお知らせください。

UPDATE:

あなたがこんなに早くそれを得ることができたという事実は素晴らしいです、そしてあなたは、このに入れている研究努力の量を示しています。前に述べたように

は、あなたのすべてのフォームに影響を与えることを、の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を表す数値に$ id_to_changeの値を変更していますあなたが影響を与えようとしている投稿/ページ。したがって、たとえば、アクションURLを変更したいバージョン情報ページがある場合、管理ダッシュボードでバージョン情報ページのID番号を見つけることができます(ページエディタに移動し、URLにID ID番号が何であれ、1を1に変更します。

これがあなたを助けてくれることを願っています。

+0

私は意図的に完全な答えをあなたに与えていない。あなたはこれを読んで、正しいadd_filter呼び出しと独自のコールバック関数を用意する必要があります。一度それをすると、我々はより多くを導くことができます。すべての作品があなたのためにあります。 – maiorano84

+0

maiorano84、お返事ありがとうございました。はい、私はadd_filter( 'wpcf7_form_action_url'、 'formname')に行きました。あなたの説明は論理を明確にします。 「フォームアクションを変更するためのURLを返すことを確認する」方法は、完全に失われた場所です。これはCF7/WPの外だった場合、私はちょうど

をHTMLで書いていますが、そのPHPのバージョンは何ですか?再び、私は理解が不足していることをお詫びします。ありがとう。 – user1102824

+1

私はそれを持っていると私は感じているように私はそれをいくつかのtmrwに見てみましょう、完全に盲目。本当にありがとう。 – user1102824

0

あなたはそれがフォームの動作を変更することを意味して動作するフィルタを追加するdocumentation says

のような成功提出後のアクションを追加することができますが、残念ながら、それはまた、プラグインの機能を中断します。他の回答のようにフィルタを追加すると、フォームは提出後にスピナーの状態を維持します。あなたは、フォームを作ることができる

は上の何かを行うなどの高度な設定を使用して提出:高度な設定hereについて

on_submit: "alert('submit');" 

詳細。