如何在Wordpress函数中简化此代码?

时间:2019-05-02 10:26:22

标签: php wordpress

我正在尝试创建一个函数,我的代码可以工作,但是我想知道有什么方法可以简化我的代码吗?也许有循环?

背景:

我尝试显示来自usermeta的数据(来自插件的usermeta) 所以这些是meta键:

  • child_name
  • child_name_1
  • child_name_2
  • child_name_3

依此类推。..基于用户在数据库中输入了多少子项。

例如,如果用户仅输入2个孩子,则元键为:

  • child_name
  • child_name_1

临时的,我只能输入3个孩子,因为我无法简化输入。

function get_child_name(){

$user = wp_get_current_user();
$count_extra_field = $user->wppb_repeater_field_15_extra_groups_count;
$count_child = $count_extra_field + 1;


$child_name_0 = $user->child_name;
$child_name_1 = $user->child_name_1;
$child_name_2 = $user->child_name_2;

$child_names = array($child_name_0,$child_name_1,$child_name_2);

$n=0;
foreach($child_names as $child_name) {
if($n==$count_child) break;
$n++;
echo $child_name;
}
}
add_shortcode('child_names', 'get_child_name');

上面的代码是可行的,因为我现在正在使用它。 但是有可能简化它/使过程自动化吗? 因此,用户可以输入尽可能多的孩子。 或者,如果我想增加限制(输入的子名称),则不必手动添加代码,是否可以?

1 个答案:

答案 0 :(得分:0)

我试图简化代码。元字段是根据索引动态创建的。请检查下面的代码。这样,当您要增加字段数时,不必再次触摸此功能。

function get_child_name(){

    $user = wp_get_current_user();

    $count_extra_field = $user->wppb_repeater_field_15_extra_groups_count;

    $names = array();

    for ( $i = 0; $i < $count_extra_field; $i++ ) {
        $meta_key = 'child_name';
        $key_suffix = ( 0 === $i ) ? '' : '_' . $i ;
        $meta_key .= $key_suffix;

        if ( $user->$meta_key ) {
            $names[] = $user->$meta_key;
        }
    }

    if ( ! empty( $names ) ) {
        foreach ( $names as $name ) {
            echo $name;
        }
    }
}