我想通過他們的表單標記過濾器來擴展CF7插件來滿足我的需求,但是我遇到了一個奇怪的情況。我有以下功能(在我的主題函數文件),有些作品:CF7動態更改表單數據
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的一面,我有以下字段:
[text user]
[text display-name]
[text email]
[text phone]
[text campaign]
這些文本字段中的每一個是通過上述功能正確更新,除了手機領域。我嘗試將該字段切換到電話,號碼,文本區域,隱藏,無濟於事。它只是不檢索值,但如果我用任何字符串(沒有數字)替換$formidable_array[135]
它將工作。如果我輸入任何數字,它不再或實際上只是拿出數字並留下字母。
請記住$formidable_array[135]
不是問題,因爲它可以被引號內的任何數字替換,並且輸出保持不變。
奇怪的事情需要注意的是,如果我是打印出來的if語句中的$tag
陣列這樣:
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
陣列兩次,第一次與正確插入手機值(即所有設置爲'1234567890'的raw_values,值和標籤),然後重新發布,所有值都設置爲null。
我有點深信,他們在插件代碼中爲某些數字出現了某種正則表達式,因爲任何原因,但我無法找到它或找出解決此問題的方法。
任何幫助,非常感謝。
編輯:
看來,如果我用下面的替換$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而不是。
編輯:
我需要弄清楚發生了什麼叫我的功能的第二次,做我的$formidable_array(135)
一個var_dump()
讓我發現,這個變量打印出來的第二次,它是NULL。那麼「wpcf7_form_tag」鉤子會執行兩次?