¿Almacenar metacampos varias veces O una vez con una matriz multidimensional?

4

Tengo algunas opciones que amplío usando un campo de tipo de repetidor. Los valores que guardo para cada campo ya son una matriz, así que en esencia estoy guardando una matriz multidimensional por opción. (Consulte este selector de horarios comerciales semanales enlace )

Mi pregunta es esta : ¿es mejor almacenar los valores meta en un campo meta como un valor serializado doble, o es mejor dividirlos en valores dimensionales pero almacenarlos como campos personalizados múltiples? ¿Con el mismo nombre en la base de datos?

El motivo por el que pregunto es porque es más fácil administrar solo un campo personalizado y, como he llegado a encontrar, tener identificaciones de campo meta duplicadas es un poco difícil de administrar. Verificar el valor antiguo para verificar que el campo correcto es engorroso.

    
pregunta Foxinni 28.08.2012 - 16:27

1 respuesta

2

Me di cuenta de que dejaré los valores de metadatos guardados en varios campos en la base de datos, porque he estado haciendo un montón de filtrado de consultas pre_get_post . Algunas de las funciones disponibles son para buscar / filtrar en metadatos posteriores y sería muy difícil si empezara a guardar valores en valores doblemente serializados. Un buen hábito que mantener si tuviera que guardar solo valores, más simples, en un futuro próximo.

Para aclarar algunos de los problemas que tuve ... Opté NO para usar update_post_meta() al guardar y simplemente eliminé todos los valores y luego los añadí inmediatamente. Verificar el valor antiguo con el nuevo y luego actuar sobre él se estaba volviendo demasiado complejo. Probablemente no sea la mejor práctica.

if(isset($_POST[$field['id']])) {
    $new = $_POST[$field['id']];
}

//Store repeater fields as one dimentional array with same key meta fields
if(is_array($new) && isset($new[0])){

    //DELETE EVERYTHING FIRST
    delete_post_meta($post_id, $field['id']);   

    foreach ($new as $key => $value) {
        add_post_meta($post_id, $field['id'], $value);  
    }

}
    
respondido por el Foxinni 28.08.2012 - 17:27

Lea otras preguntas en las etiquetas