7

Esto debería ser fácil para un experto en PHP. Tengo problemas para almacenar y extraer matrices en Wordpress a través de la función update_user_meta.Almacenamiento de matrices PHP en Wordpress Base de datos de usuarios Meta

Así que he una matriz asociativa construida de esta manera:

Array 
(
    [film_genres] => Array 
     (
      [action] => 50 
      [comedy] => 50 
      [crime] => 50 
      [documentary] => 50 
      [drama] => 50 
      [family] => 50 
      [horror] => 50 
      [romantic] => 50 
      [sci-fi] => 50 
      [thriller] => 50 
     ) 

    [film_types] => Array 
     (
      [blockbuster] => 0 
      [independent] => 0 
     ) 

    [film_eras] => Array 
     (
      [1920s_1940s] => 0 
      [1950s_1960s] => 0 
      [1970s_1980s] => 0 
      [1990s_2000s] => 0 
      [post_2010] => 0 
      [pre_1920s] => 0 
     ) 

    [last_updated] => 2011-10-12 21:21:28 
)

Pero cuando voy a actualizar estos datos en la tabla de meta usuario a través de:

update_user_meta ($ user_id, $ meta_key, $ meta_value, $ prev_value)

Los datos se guardan en el archivo db correctamente, pero cuando vuelvo a llamar los datos e imprimo el nuevo conjunto en la pantalla, tiene una clave de matriz anidada de [0] dentro de la matriz, como esta :

 
Array 
(
    [0] => Array 
     (
      [film_genres] => Array 
       (
        [action] => 50 
        [comedy] => 50 
        [crime] => 50 
        [documentary] => 50 
        [drama] => 50 
        [family] => 50 
        [horror] => 50 
        [romantic] => 50 
        [sci-fi] => 50 
        [thriller] => 50 
       ) 

      [film_types] => Array 
       (
        [blockbuster] => 0 
        [independent] => 0 
       ) 

      [film_eras] => Array 
       (
        [1920s_1940s] => 0 
        [1950s_1960s] => 0 
        [1970s_1980s] => 0 
        [1990s_2000s] => 0 
        [post_2010] => 0 
        [pre_1920s] => 0 
       ) 

      [last_updated] => 2011-10-12 21:21:28 
     ) 

) 

¿Cómo puedo obtener para almacenar la matriz exactamente como mi primera matriz? Estoy tirando la matriz de valores meta a través del comando WP:

$wp_user_film_prefs_arr = get_user_meta($wp_user_id, $wp_user_film_prefs_key_label, false);

¿Hay algo que estoy haciendo mal? ¡¡¡Gracias por adelantado!!!

Respuesta

17

Es necesario configurar el último parámetro de false a true:

$wp_user_film_prefs_arr = get_user_meta($wp_user_id, $wp_user_film_prefs_key_label, true); 

Ese tercer parámetro es $single:

(booleano) (opcional) Si es verdadero valor de retorno de campo de metadatos, si es falso devuelve una matriz.

por defecto: false

que puede sonar contra-productivo en sus ojos, pero el campo de metadatos pueden contener varios valores. En su caso, no necesita eso, sino el valor único. El valor único es tu matriz.

Ver también: get user metaCodex

+0

¡Sí, tenías razón! Inicialmente elegí el pensamiento falso de que devolvería la matriz, como en mi conjunto de valores, pero está redistribuyendo una matriz del campo de metadatos. Se cambió a verdadero para devolver el valor y luego se almacenó como una matriz con "maybe_unserialize ($ wp_user_film_prefs_val);" ¡Gracias hombre! – chuuke

+0

¡Genial! ¡gracias! – Magico

+0

Es difícil darse la vuelta pensando en una matriz como un valor único – henrywright

0

¿Ha considerado serialize() como una cadena y almacena esta cadena en su base de datos, y unserialize() str en la matriz después de obtener de db?

+0

WordPress hace la serialización de que detrás de las escenas. @harkra tenía la respuesta correcta. – James

Cuestiones relacionadas