PHP цикл foreach, используемый в WordPress wp_customize-> add_control - PullRequest
0 голосов
/ 13 июня 2018

Я пытаюсь составить список вариантов шрифтов Google для использования в раскрывающемся списке в настройщике WordPress, но у меня возникают трудности с правильным циклом:

$i = 0;
foreach ($items as $font_value => $item) {
    $i++;
    $str = $item['family'];
}

Строка выше должна быть внутрив массиве ниже, чтобы сгенерировать список вариантов:

$wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'ounox-fonts-display-control', array(
    'label' => 'Fonts Section',
    'section' => 'ounox-fonts-section',
    'settings' => 'ounox-fonts-display',
    'type' => 'select',
    'choices' => $str
)));

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Аргумент choices ожидает массив , а не строку, поэтому вам нужно будет вместо этого сохранить каждый $item['family'] в массив, а затем добавить этот массив вАргумент.

Hapstyx также правильно указал, что вам не нужно $i++ для итерации вашего цикла.

Массив, который choices ожидает для ваших опций выпадающего меню, должен выглядеть примерно такэто:

$choices = array(
    'option-value-1'    => 'Option Title 1',
    'option-value-2'    => 'Option Title 2',
    'option-value-3'    => 'Option Title 3'
);

Мы можем построить этот тип массива следующим образом:

//predefine a blank array which we will fill with your options
$choices = array();

//loop through your items and that the values to the $choices array
foreach ($items as $font_value => $item) {
    $choices[$item['slug']] = $item['family']; //I'm assuming your $item array contains some sort of slug to set as the value, otherwise, comment the above out, and uncomment the below:
    // $choices[$item['family']] = $item['family']
}

//set your arguments
$args = array(
    'label'     => 'Fonts Section',
    'section'   => 'ounox-fonts-section',
    'settings'  => 'ounox-fonts-display',
    'type'      => 'select',
    'choices'   => $choices
);

//add the control
$wp_customize->add_control( new WP_Customize_Control( $wp_customize, 'ounox-fonts-display-control', $args));
0 голосов
/ 13 июня 2018
Цикл

A foreach не требует счетчика, поэтому $i является избыточным.Вы также переопределяете $str с каждой итерацией.

$str = '';
foreach ($items as $font_value => $item) {
    $str .= $item['family']; // . '##' in case you need a delimiter
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...