Как упростить этот код в функции Wordpress? - PullRequest
0 голосов
/ 02 мая 2019

Я пытаюсь сделать функцию, мой код работает, но мне интересно, есть ли способ упростить мой код?с циклом может быть?

Фон:

Я пытаюсь показать данные из usermeta (usermeta из плагина), так что это мета-ключ:

  • 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 голосов
/ 03 мая 2019

Я попытался упростить код.Мета-поля создаются динамически на основе индекса.Пожалуйста, проверьте код ниже.При этом вам не нужно снова касаться этой функции, если вы хотите увеличить количество полей.

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;
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...