chuuke
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.
Entonces tengo una matriz asociativa construida así:
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 metatabla del usuario a través de:
update_user_meta( $id_usuario, $meta_clave, $meta_valor, $anterior_valor)
Los datos se colocan en la base de datos correctamente, pero cuando vuelvo a llamar a los datos e imprimo la nueva matriz en la pantalla, tiene una clave de matriz anidada de [0] dentro de la matriz, así:
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 hacer que almacene la matriz exactamente como mi primera matriz? Estoy extrayendo 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!!!
hakré
Debe establecer 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, devuelve el valor del campo de metadatos, si es falso, devuelve una matriz.
Predeterminado: falso
Eso puede sonar contraproducente a sus ojos, pero el campo de metadatos puede contener múltiples valores. En tu caso no necesitas eso, sino el valor único. El valor único es su matriz.
Ver también: get user meta
Códice
-
¡Sí, tenías razón! Inicialmente elegí falso pensando que luego devolvería la matriz, como en mi matriz de valores, pero está devolviendo una matriz DEL campo de metadatos. Cambió a verdadero para devolver el valor y luego lo almacenó como una matriz con “maybe_unserialize($wp_user_film_prefs_val);” ¡Gracias hombre!
– chuuke
13/10/2011 a las 15:55
-
Es difícil hacerse a la idea de pensar en una matriz como un valor único
– henry wright
11 de marzo de 2014 a las 11:28
-
Seguro que es un diseño de API pobre, ¡gracias por tu respuesta!
– Maciej Krawczyk
17 de marzo de 2018 a las 11:39
¿Has considerado serialize()
como una cadena y almacene esta cadena en su base de datos, y unserialize()
el str en matriz después de obtener de db?
-
WordPress hace la serialización por ti detrás de escena. @harkra tenía la respuesta correcta.
– Jaime
27/09/2012 a las 20:53