我按照的建议创建了一些自定义概要文件字段Thomas Griffin 和Stephanie Leary. 像这样:
function change_contactmethod( $contactmethods ) {
// Add some fields
$contactmethods[\'twitter\'] = \'Twitter Name (no @)\';
$contactmethods[\'phone\'] = \'Phone Number\';
$contactmethods[\'title\'] = \'Title\';
// Remove AIM, Yahoo IM, Google Talk/Jabber
unset($contactmethods[\'aim\']);
unset($contactmethods[\'yim\']);
unset($contactmethods[\'jabber\']);
// make it go!
return $contactmethods;
}
add_filter(\'user_contactmethods\',\'change_contactmethod\',10,1);
我想为重力表单创建一个自定义合并标记,以通过用户的电话号码输出(
$contactmethods[\'phone\']
).
我可以通过两种不同的方式检索此信息:
方式1:
function phone() {
$userid = get_current_user_id();
$user_info = get_userdata($userid);
return get_user_meta($userid, \'phone\', true);
}
或方式2:
function phone() {
echo the_author_meta(\'phone\', $current_author->ID);
}
我甚至可以创建
[phone]
通过添加短代码:
add_shortcode(\'phone\', \'phone\');
当我尝试添加
[phone]
短代码作为重力表单中的默认输入值,它不处理短代码。重力有一种叫做短标签的东西,我从
documentation on Gravity 那个
{user:[meta_key]}
可以作为
{user:phone}
, 但我还没有将其设置为合并标记。我对JavaScript不太熟悉,我所做的设置此合并标记的工作不起作用:
add_action("gform_admin_pre_render", "add_merge_tags");
function add_merge_tags($form){
$mergeTags["phone"] = the_author_meta(\'phone\', $current_author->ID);
?>
<script type="text/javascript">
gform.addFilter("gform_merge_tags", "add_merge_tags");
function add_merge_tags(mergeTags, elementId, hideAllFields, excludeFieldTypes, isPrepop, option){
mergeTags["phone"].tags.push({ tag: \'{phone}\', label: \'Phone\' });
return mergeTags;
}
</script>
<?php
//return the form object from the php hook
return $form;
}
如何为添加的自定义元字段创建自定义合并标记?或者如何允许我的字段输入读取
[phone]
短代码?
最合适的回答,由SO网友:webaware 整理而成
您需要使用添加新的合并标记gform_custom_merge_tags filter, 然后用gform_replace_merge_tags filter, 像这样:
编辑:您需要使用gform_field_content filter 要替换字段的默认值,请参见下文。
add_filter(\'gform_custom_merge_tags\', \'wpse_121476_custom_merge_tags\', 10, 4);
add_filter(\'gform_replace_merge_tags\', \'wpse_121476_replace_merge_tags\', 10, 7);
add_filter(\'gform_field_content\', \'wpse_121476_field_content\', 10, 5);
/**
* add custom merge tags
* @param array $merge_tags
* @param int $form_id
* @param array $fields
* @param int $element_id
* @return array
*/
function wpse_121476_custom_merge_tags($merge_tags, $form_id, $fields, $element_id) {
$merge_tags[] = array(\'label\' => \'User Phone\', \'tag\' => \'{user_phone}\');
return $merge_tags;
}
/**
* replace custom merge tags in notifications
* @param string $text
* @param array $form
* @param array $lead
* @param bool $url_encode
* @param bool $esc_html
* @param bool $nl2br
* @param string $format
* @return string
*/
function wpse_121476_replace_merge_tags($text, $form, $lead, $url_encode, $esc_html, $nl2br, $format) {
$userid = get_current_user_id();
$phone = $userid ? get_user_meta($userid, \'phone\', true) : \'\';
$text = str_replace(\'{user_phone}\', $phone, $text);
return $text;
}
/**
* replace custom merge tags in field content
* @param string $field_content
* @param array $field
* @param string $value
* @param int $lead_id
* @param int $form_id
* @return string
*/
function wpse_121476_field_content($field_content, $field, $value, $lead_id, $form_id) {
if (strpos($field_content, \'{user_phone}\') !== false) {
$userid = get_current_user_id();
$phone = $userid ? get_user_meta($userid, \'phone\', true) : \'\';
$field_content = str_replace(\'{user_phone}\', $phone, $field_content);
}
return $field_content;
}