基于简码属性剥离自定义字段标签的简码
Shortcode to Strip Tags of Custom Fields Based on Shortcode attribute
问题背景
我创建了一组自定义字段,例如person-given-name
、person-last-name
和 person-job-title
。这些自定义字段包含 html
。我想在我网页的特定位置以纯文本形式显示它们的内容。自定义字段由名为 Toolset Types
的插件创建,该插件具有显示自定义字段内容的内置函数:types_render_field( "custom-field-slug", array());
为了有效地做到这一点,我想创建一个带有属性的简码,当我在属性中添加字段名称时,strip_tags
将应用于该自定义字段,并且 return
自定义字段的纯文本内容。
初始函数
以下函数仅适用于一个字段。
function add_person_data() {
if( function_exists( 'types_render_field' ) ){
$input = types_render_field( "person-job-title", array());
$a = strip_tags($input);
return $a;
}
}
add_shortcode( 'add-person-data', 'add_person_data');
更新函数
我试图扩展该功能以具有简码属性,我可以在其中指定要应用 strip_tags
并显示的自定义字段。
该函数在 php-error.log
中没有给出错误,但没有 return
任何值。这是我使用的简码 [add-person-data field="givenname"]
.
function add_person_data($atts) {
$atts = shortcode_atts(
array(
'field' => '',
),
$atts
);
if( function_exists( 'types_render_field' ) ){
$person_info = array_filter( array (
'givenname' => types_render_field( "person-given-name", array () ),
'familyname' => types_render_field( "person-family-name", array () ),
'jobtitle' => types_render_field( "person-honorific-suffix", array () ),
) );
foreach ( $person_info as $prop => $value ) {
$a = strip_tags($person_info['field']);
}
return $a;
}
}
add_shortcode( 'add-person-data', 'add_person_data');
有人可以指出我正在做的错误,以便我可以修复代码吗?
提前致谢。
尝试使用下面的代码:
function add_person_data($atts) {
$atts = shortcode_atts(
array(
'field' => 'givenname',
),
$atts
);
$a = '';
if( function_exists( 'types_render_field' ) ){
$person_info = array_filter( array (
'givenname' => types_render_field( "person-given-name", array () ),
'familyname' => types_render_field( "person-family-name", array () ),
'jobtitle' => types_render_field( "person-honorific-suffix", array () ),
) );
$a = $person_info[$atts['field']];
$b = strip_tags($a);
return $b;
}
}
add_shortcode( 'add-person-data', 'add_person_data');
问题背景
我创建了一组自定义字段,例如person-given-name
、person-last-name
和 person-job-title
。这些自定义字段包含 html
。我想在我网页的特定位置以纯文本形式显示它们的内容。自定义字段由名为 Toolset Types
的插件创建,该插件具有显示自定义字段内容的内置函数:types_render_field( "custom-field-slug", array());
为了有效地做到这一点,我想创建一个带有属性的简码,当我在属性中添加字段名称时,strip_tags
将应用于该自定义字段,并且 return
自定义字段的纯文本内容。
初始函数
以下函数仅适用于一个字段。
function add_person_data() {
if( function_exists( 'types_render_field' ) ){
$input = types_render_field( "person-job-title", array());
$a = strip_tags($input);
return $a;
}
}
add_shortcode( 'add-person-data', 'add_person_data');
更新函数
我试图扩展该功能以具有简码属性,我可以在其中指定要应用 strip_tags
并显示的自定义字段。
该函数在 php-error.log
中没有给出错误,但没有 return
任何值。这是我使用的简码 [add-person-data field="givenname"]
.
function add_person_data($atts) {
$atts = shortcode_atts(
array(
'field' => '',
),
$atts
);
if( function_exists( 'types_render_field' ) ){
$person_info = array_filter( array (
'givenname' => types_render_field( "person-given-name", array () ),
'familyname' => types_render_field( "person-family-name", array () ),
'jobtitle' => types_render_field( "person-honorific-suffix", array () ),
) );
foreach ( $person_info as $prop => $value ) {
$a = strip_tags($person_info['field']);
}
return $a;
}
}
add_shortcode( 'add-person-data', 'add_person_data');
有人可以指出我正在做的错误,以便我可以修复代码吗?
提前致谢。
尝试使用下面的代码:
function add_person_data($atts) {
$atts = shortcode_atts(
array(
'field' => 'givenname',
),
$atts
);
$a = '';
if( function_exists( 'types_render_field' ) ){
$person_info = array_filter( array (
'givenname' => types_render_field( "person-given-name", array () ),
'familyname' => types_render_field( "person-family-name", array () ),
'jobtitle' => types_render_field( "person-honorific-suffix", array () ),
) );
$a = $person_info[$atts['field']];
$b = strip_tags($a);
return $b;
}
}
add_shortcode( 'add-person-data', 'add_person_data');