Estoy creando un widget, necesita almacenar aproximadamente 10 ID. En este momento estoy usando el siguiente método de campo para almacenar cada una de las ID en un campo separado. Almacena datos de cada campo por separado en el wordpress. ¿Es posible almacenar los datos de todos los campos en una sola fila en WordPress para examinar usando una matriz?
<input
class="widefat"
id="<?php echo $this->get_field_id('item1_id'); ?>"
name="<?php echo $this->get_field_name('item1_id'); ?>"
value="<?php echo $instance['item1_id']; ?>"
/>
<input
class="widefat"
id="<?php echo $this->get_field_id('item2_id'); ?>"
name="<?php echo $this->get_field_name('item2_id'); ?>"
value="<?php echo $instance['item2_id']; ?>"
/>
theme-development
widgets
options
array
arrendajo
fuente
fuente
$instance
es una matriz y contiene todos los valores. ¿Y qué quiere decir con "almacenar los datos de todos los campos en una sola fila"? ¿Quiso decir una fila de la base de datos?Respuestas:
Tienes que recopilar múltiples campos con el mismo nombre como este ...
... y ajusta la lógica de tu widget a esto.
Aquí hay un widget de demostración muy simple:
Backend
Interfaz
fuente
printf
Sintaxis muy eleganteclass="widefat"
para los campos.La respuesta anterior es buena si necesita que los campos estén numerados. En mi caso, no lo hice. Tengo un widget con opciones que permiten al usuario seleccionar cualquier número de categorías para usar dentro del widget.
Aquí está mi widget
form
. - Tres cosas importantes aquíarray()
si el valor del widget no está establecido<label>
name
atributo de formulario , observe que adjunto un[]
al final. Esto le dice a PHP que estoy enviando una matriz de valores para esta clave<label><input type="checkbox" ...></label>
. - Cada una de nuestras casillas de verificación no tendrá unid
atributo único , por lo que el<label>
for
atributo no funcionará. Podríamos generar ID únicos, pero eso es una molestia. Si solo ajusta la etiqueta alrededor de la entrada, la etiqueta se asociará correctamente sin la molestia de conectar elfor
+id
Ahora el código
Y aquí está mi función de actualización
Estoy interesado en guardar la identificación categoría en una matriz, que son los números, así que uso
array_map
conintval
para asegurar que todo dato presentado son números enteros válidos. Además, usoarray_filter
para eliminar cualquier envío no válido.Es particularmente desafiante describir estas cosas de WordPress. Si tiene alguna pregunta, estaré encantado de elaborarla.
fuente