update_user_meta добавить значение сверху в существующее значение

Я работаю над плагином, который позволит людям любимым авторам на сайте WP.

Когда вы нажмете кнопку «Избранное» этого автора, она отправит идентификатор автора ниже функции и сохранит это значение в БД.

Ниже приведен код, который я сохраняю значение для FAV_AUTHORS_META_KEY в таблице wp_usermeta .

 $user_id = fav_authors_get_user_id(); $fav_author_id = 2; update_user_meta( $user_id, FAV_AUTHORS_META_KEY, $fav_author_id ); 

Если у меня есть идентификатор автора 2 , он сохранит это в БД. Однако, когда я отправляю другой идентификатор автора, update_user_meta переопределяет существующее значение вместо добавления нового значения.

Как заставить его сохранить существующее значение и добавить новое значение вверху?

Solutions Collecting From Web of "update_user_meta добавить значение сверху в существующее значение"

Нет встроенных функций для добавления метазначений, которые вам нужно будет сделать вручную. Если вы планируете добавлять несколько значений, я бы предложил сохранить его как массив, но он будет сериализовать его в базе данных, что затруднит запуск WP_Meta_Query .

 $user_id = fav_authors_get_user_id(); $fav_author_id = 2; $author_list = get_user_meta( $user_id, FAV_AUTHORS_META_KEY, true ); if( empty( $author_list ) ) { // There was no meta_value, set an array. update_user_meta( $user_id, FAV_AUTHORS_META_KEY, array( $fav_author_id ) ); } else { $author_arr = ( is_array( $author_list ) ) ? $author_list : array( $author_list ); // Added in case current value is not an array already. $author_arr[] = $fav_author_id; update_user_meta( $user_id, FAV_AUTHORS_META_KEY, $author_arr ); } 

Я предполагаю, что у вас в настоящее время нет массива, поэтому я добавляю inline-conditional внутри оператора else для преобразования любых значений в массив. Обратите внимание, что вы должны передать true get_user_meta() чтобы он не инициализировал наш массив.