Wordpress: array_push создает массив внутри предыдущего массива - PullRequest
0 голосов
/ 05 марта 2019

Я хочу создать в WordPress usermeta данные на array() с любимыми сообщениями пользователя, которые он может добавить к этой мета favorite.

Если я использую array_push() на get_user_meta() массивевложен в последующий массив.

my_operation(){    
   $meta_user_favorite = get_user_meta($user_id,"favorite");   
   array_push($meta_user_favorite, $post_id);    
   update_user_meta( $user_id, "favorite", $meta_user_favorite);  
}

После нескольких таких операций это мой результат в var_dump($meta_user_favorite);

array(1) {
  [0]=>
  array(2) {
    [0]=>
    array(2) {
      [0]=>
      array(2) {
        [0]=>
        array(1) {
          [0]=>
          int(726)
        }
        [1]=>
        int(713)
      }
      [1]=>
      int(710)
    }
    [1]=>
    int(688)
  }
}

Это должно быть в одном массиве, что я делаю неправильно?

array(1) {
      [0]=>int(726)
      [0]=>int(713)
      [0]=>int(710)
      [0]=>int(688)
}

1 Ответ

1 голос
/ 05 марта 2019

Взгляните на документы для get_user_meta(). Третий аргумент, который вы пропускаете, это $single, который по умолчанию равен false и определяет, возвращать ли массив или значение. Если вы передадите true этому (что, честно говоря, я использую в 95% моих сценариев использования при работе с пользователем и публикацией мета), это должно сработать.

my_operation(){
    $meta_user_favorite = get_user_meta( $user_id, 'favorite', true );   
    array_push( $meta_user_favorite, $post_id );    
    update_user_meta( $user_id, 'favorite', $meta_user_favorite );
}
...