私のニーズを満たすためにフォームタグフィルタでCF7プラグインを拡張しようとしていますが、私は奇妙なケースに遭遇しました。私はやや動作する(私のテーマ関数ファイルで)、以下の機能を持っている:CF7フォームデータを動的に変更する
[text user]
[text display-name]
[text email]
[text phone]
[text campaign]
これらのテキストフィールドの各1です:
function custom_shortcode_handler($tag, $unused) {
$formidable_array = get_related_vars(array('type' => 'cf7'));
if ($tag[name] === 'user') {
$tag[raw_values][] = $user;
$tag[values][] = $user;
$tag[labels][] = $user;
}
if ($tag[name] === 'display-name') {
$tag[raw_values][] = $display_name;
$tag[values][] = $display_name;
$tag[labels][] = $display_name;
}
if ($tag[name] === 'email') {
$tag[raw_values][] = $formidable_array[139];
$tag[values][] = $formidable_array[139];
$tag[labels][] = $formidable_array[139];
if (!empty($formidable_array[223])) {
$tag[raw_values][] = $formidable_array[139].', '.$formidable_array[298];
$tag[values][] = $formidable_array[139].', '.$formidable_array[298];
$tag[labels][] = $formidable_array[139].', '.$formidable_array[298];
}
}
if ($tag[name] === 'phone') {
$tag[raw_values][] = $formidable_array[135];
$tag[values][] = $formidable_array[135];
$tag[labels][] = $formidable_array[135];
}
if ($tag[name] === 'campaign') {
$tag[raw_values][] = $campaign_name;
$tag[values][] = $campaign_name;
$tag[labels][] = $campaign_name;
}
return $tag;
}
add_filter('wpcf7_form_tag', 'custom_shortcode_handler', 10, 2);
をお問い合わせフォーム7側では、私は次のフィールドを持っています電話機のフィールドを除いて、上記の関数によって正しく更新されました。私はそのフィールドをtel、number、text area、hidden、no availに切り替えようとしました。単に値を取得しませんが、$formidable_array[135]
を(数字のない)任意の文字列に置き換えても機能します。私が任意の数字を入力すると、それはもはや実際には数字を取り出して文字を残しません。
$formidable_array[135]
は引用符内の任意の数字に置き換えることができ、出力は同じままであるため、問題はありません。
if ($tag[name] === 'phone') {
$tag[raw_values][] = $formidable_array[135];
$tag[values][] = $formidable_array[135];
$tag[labels][] = $formidable_array[135];
echo '<pre>';
print_r($tag);
echo '</pre>';
}
それは(最初に正しく挿入された携帯電話の値で、二回$tag
配列を印刷します:注意すべき奇妙な
何かが私のようなif文の中$tag
配列をプリントアウトした場合ということですraw_values、values、およびlabelはすべて '1234567890'に設定されています)、すべての値をnullに戻して再ポストします。
何らかの理由で何らかのRegexクリーナーがプラグインコード内にあると確信していますが、それを見つけることができず、解決方法を見つけられません。
ご迷惑をおかけして申し訳ありません。
EDIT:$ formidable_array [135]は同じを保持しているので、なぜかかわら取得しないでください...
if ($tag[name] === 'phone') {
$tag[raw_values][] = '123-123-1234';
$tag[values][] = '123-123-1234';
$tag[labels][] = '123-123-1234';
}
それは動作します:
は、私は次のように$formidable_array[135]
を置き換える場合ようです代わりにecho'dの場合は値。
EDIT:
私は私の$formidable_array(135)
上var_dump()
をやって、2回目の私の関数を呼び出しているものを把握する必要がありますが、私は変数がプリントアウトされていることを2回目は、それがNULLだことを発見しました。だから "wpcf7_form_tag"フックが2回実行されていますか?