Попытка отобразить вставленный опыт с foreach в PHP - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь отобразить в HTML div каждый элемент вкладки для плагина Wordpress.

Вот функция, которую я вызываю на своей странице:

function past_experiences() {
    $past_experience = get_user_meta($current_user_id, 'experiences', true);
    foreach ($past_experience as $key) {
        ?>
        <div class="past_experiences"> <?= print_r($key['new_experience_team']); ?> </div>
        <?php
    }
}

, а вот как выглядит мой 'get_user_meta ($ current_user_id,' experience ', true)', когда я его печатаю ( из функции):

 Array
(
    [0] => Array
        (
            [new_experience_team] => fhbjdshj
            [new_experience_role] => fdjhsfbkq
            [new_experience_description] => fbdsbq
            [new_experience_palmares] => fbdhsjqfbk
        )

    [1] => Array
        (
            [new_experience_team] => Hello
            [new_experience_role] => Hello
            [new_experience_description] => Hello
            [new_experience_palmares] => Hello
        )

    [2] => Array
        (
            [new_experience_team] => Hi
            [new_experience_role] => Hi
            [new_experience_description] => Hi
            [new_experience_palmares] => Hi
        )

)

А теперь ошибка:

Invalid argument supplied for foreach()

РЕДАКТИРОВАТЬ (РЕШЕНИЕ):

На самом деле проблема была при попытке вызовите функцию в HTML. Разбирая содержимое функции непосредственно в моем div, она работала (поэтому в том же файле, а не в другом. Вот так конечный результат:

<div class="experiences_container">
    <?php 
    if (!empty($experiences)) {
        foreach ($experiences as $key) {
        ?>
            <div class="past_experience">
                <div class="experience_header">
                    <div>
                        <label for="team">Nom de l'équipe</label>
                            <input class="team" name="team" value="<?= $key['new_experience_team'];?>"/>
                    </div>
                    <div>
                        <label for="role">Rôle dans l'équipe</label>
                            <input class="role" name="role" value="<?= $key['new_experience_role'];?>"/>
                    </div>
                </div>

                <div class="experience_textarea">
                    <label for="description">Description du rôle</label>
                    <textarea class="description" name="description"><?= $key['new_experience_description']; ?></textarea>

                    <label for="palmares">Palmarés avec l'équipe</label>
                    <textarea class="palmares" name="palmares"><?= $key['new_experience_palmares']; ?></textarea>
                </div>

            </div>  
        <?php
        } 
    } else {
    ?>
    <div><p>Vous n'avez encore rentré aucune expérience</p></div>
    <?php 
}?>
</div>

1 Ответ

0 голосов
/ 23 апреля 2020

Вот цитата из кодекса WordPress:

Return # Return

(mixed) Будет массивом, если $ single равно false. Будет значением поля метаданных, если $ single равно true.

Ваш код - после документации WordPress - возвращает значение, а не массив. Для получения массива необходимо установить последний параметр на false.

$result = get_user_meta($current_user_id, 'experiences', false);

Дополнительная информация для функции get_user_meta: https://developer.wordpress.org/reference/functions/get_user_meta/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...