WordPress Multiple做短码过滤器

时间:2014-12-04 00:32:41

标签: php wordpress filter

环顾四周,找不到与此相关的任何内容。尝试在WordPress网站上运行do短代码过滤器的多个实例,以预先填充Web表单中的某些表单值。

仍在努力解决这个问题并获得一些错误。我们如何将它们组合起来以避免重复的功能错误和其他相关问题?

单个执行短代码过滤器的当前工作示例,仅此一项有效:

add_filter('gform_field_value_Leadsource', 'my_custom_population_function');
function my_custom_population_function($value){
return do_shortcode('[Leadsource]');
}

我们如何将以下的短代码过滤器组合成一位代码?复制和粘贴示例非常有用。

add_filter('gform_field_value_Leadsource', 'my_custom_population_function');
function my_custom_population_function($value){
return do_shortcode('[Leadsource]');
}
add_filter('gform_field_value_First', 'my_custom_population_function');
function my_custom_population_function($value){
return do_shortcode('[i4w_db_FirstName]');
}
add_filter('gform_field_value_Last', 'my_custom_population_function');
function my_custom_population_function($value){
return do_shortcode('[i4w_db_LastName]');
}
add_filter('gform_field_value_Email', 'my_custom_population_function');
function my_custom_population_function($value){
return do_shortcode('[i4w_db_Email]');
}

感谢任何可以提供帮助的人! :)

1 个答案:

答案 0 :(得分:0)

我觉得这样的事情应该可以解决问题(PHP 5.3或更高版本):

add_action( 'init', 'so27284262_shortcode_init' );
function so27284262_shortcode_init()
{
    $xref = array(
        'Leadsource'    => 'Leadsource',
        'First'         => 'i4w_db_FirstName',
        'Last'          => 'i4w_db_LastName',
        'Email'         => 'i4w_db_Email'
    );

    foreach( $xref as $name => $cb ) {
        add_filter( 'gform_field_value_' . $name, function( $value ) use ( $cb ) {
            return do_shortcode( "[$cb]" );
        } );
    }
}