Как динамически обновить WordPress post_meta - PullRequest
0 голосов
/ 08 марта 2020

Я пытаюсь вставить / обновить мета сообщения, когда пользователь регистрируется. Прежде чем написать это действие, я тестирую этот код на странице, поэтому всякий раз, когда страница обновляется sh, она вставляет / обновляет мета записи.

Вопрос: Однако код ниже не вставляет / обновляет что-либо в мета-посте. Может кто-нибудь сказать мне, что не так в этом коде или как это исправить?

$groupItem = get_post(123);

if ($groupItem && $groupItem->post_type == 'cpt_group') {

    $meta     = 'group_users';
    $user_ids = get_post_meta($groupItem->ID, $meta, TRUE);

    if ( ! $user_ids) {
        $user_ids = [];
        add_post_meta($groupItem->ID, $meta, array_push($user_ids, 26));
    } else {
        update_post_meta($groupItem->ID, $meta, array_push($user_ids, 26), $user_ids);
    }
}

Ответы [ 2 ]

0 голосов
/ 09 марта 2020

Это не проверено, но я думаю, что это должно работать.

get_post_meta автоматически сериализует ваш массив в базе данных, но также будет десериализоваться. Удалите ложное.

Я немного смущен вашим утверждением if в вашем вопросе. Я могу обновить это, если это не то, что вы хотите. Но это обновит post_meta

    $groupItem = get_post(123);

    if ($groupItem && $groupItem->post_type == 'cpt_group') {

        $meta     = 'group_users';
        $user_ids = get_post_meta($groupItem->ID, $meta); // without false, it returns an array

        // user_ids is an array
        $user_ids[] = '26'; // Array Push
        // update_post_meta - if not already set, it will set it.
        update_post_meta($groupItem->ID, $meta, $user_ids); 
    }    
0 голосов
/ 09 марта 2020

Вы можете использовать сериализованные данные вместо php массива для meta_value.

Просмотрите функции serialize () и unserialize () .

Они преобразуют объект или массив в текстовое представление, чтобы сохранить его в текстовом поле в базе данных.

Когда вы получите данные, вам нужно их не сериализовать, и вы получите обратно ваш сохраненный объект или массив

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