问题背景
我创建了一组自定义字段,例如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');
更新的功能
我试图将函数扩展为具有shortcode属性,在这里我可以指定要在其上应用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');
有人可以指出我所犯的错误,以便我修复代码吗?
谢谢。
答案 0 :(得分:1)
请尝试使用以下代码:
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');