基于简码属性剥离自定义字段标签的简码

Shortcode to Strip Tags of Custom Fields Based on Shortcode attribute

问题背景

我创建了一组自定义字段,例如person-given-nameperson-last-nameperson-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');