我试图通过他们的表单标签过滤器扩展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数组,首先是正确插入的电话值(即raw_values、values和标签都设置为'1234567890'),然后是将所有值设置为null的重发。
我有点相信他们在插件代码中有某种Regex清洁器,不管出于什么原因,但是我找不到它,也找不到解决这个问题的方法。
任何帮助都是非常感谢的。
编辑:
如果我将$formidable_array[135]替换为以下内容:
if ($tag[name] === 'phone') {
$tag[raw_values][] = '123-123-1234';
$tag[values][] = '123-123-1234';
$tag[labels][] = '123-123-1234';
}起作用了..。但是,不要理解为什么,因为如果回显相反,$formidable_array135拥有相同的值。
编辑:
我需要弄清楚第二次调用我的函数是什么,在我的var_dump()上做一个$formidable_array(135)让我发现第二次输出这个变量时,它是空的。所以"wpcf7_form_tag“钩子被执行了两次??
发布于 2017-03-19 23:54:46
"wpcf7_form_tag“钩子不会执行两次,但是CF7会两次检测每个字段名,但不确定原因。但这不是最终拥有空值的原因..。
电话号码不是唯一变为空的东西,我的整个强大的数组都变成了空。
我的问题与我如何从数据库中获得令人敬畏的价值有关。每次函数运行时,我都会创建一个新的DB连接,这是一个很大的NoNo。使我的外部DB连接成为一个全局连接,问题就消失了。
我认为这是一个速度问题,因为有两个函数试图查询同一个数据库表。
https://stackoverflow.com/questions/42758115
复制相似问题