Metacuadros o metabox de WordPress

Home » Blog » Metacuadros o metabox de WordPress

Los metabox o metacuadros son bloques de información que se usan para incorporar nuevas opciones o información a las páginas, entradas o entradas personalizadas.

Creando nuestro metabox

Para crear un bloque disponemos tanto de una función como de un Hook:

function add_custom_meta_box(){
add_meta_box("demo-meta-box", "Custom Meta Box", "custom_meta_box_markup", "post", "side", "high", null);
}
add_action("add_meta_boxes", "add_custom_meta_box");
  • demo-meta-box: Es el identificativo del bloque.
  • Custom Meta Box: Título del bloque, se muestra en el metacuadro.
  • custom_meta_box_markup: Función para mostrar la información.
  • post: Página en la que se quiere mostrar el metabox, en este caso en entradas.
  • side: En qué zona se mostrara, side (lateral), advanced, normal.
  • high: Prioridad del cuadro, hide, core, default, low.
  • null: Argumentos que se pasan al cajón. En este ejemplo no se pasa nada.

A continuación creamos la función:

function custom_meta_box_markup($post){ 
$precio=get_post_meta($post->ID,'_precio', true); 
wp_nonce_field(plugin_basename(__FILE__),'guardar_metabox'); 
echo '<p>Precio: <input type="text" name="precio" value="'.esc_attr($precio).'" /></p>'; 
}

Simplemente tenemos un input, que previamente recuperamos su valor y antes de mostrarlo creamos un nonce de seguridad.

Guardamos la nueva información

Ahora necesitamos poder almacenar los nuevos campos, comprobando que el nonce es correcto sino nos dará un error y no podremos guardan nada de la página.

function guardar_datos_metabox($post_id) { 
if (isset($_POST['precio'])){ 
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; 
//si hay guardado automatico que no guarde estos datos 

check_admin_referer(plugin_basename(__FILE__),'guardar_metabox'); 
//comprobamos el nonce 

update_post_meta($post_id, '_precio',sanitize_text_field($_POST['precio'])); 
} 
} 
add_action("save_post", "guardar_datos_metabox");

Mostrar la nueva información en el bucle

Ahora solo queda mostrar la información almacenada dentro del bucle de WordPress. Para lo que usamos la misma función que en el administrador:

$precio=get_post_meta($post->ID,'_precio', true);
echo esc_html($precio);

Y por último controlamos la salida con esc_html.

Y ya esta, así de sencillo poder incorporar nuevos bloques de información.


Categorías


Foto de Iñigo Mezo Alvarez

IÑIGO MEZO ALVAREZ (IMAcreste)


Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Las reseñas son opiniones que las personas dejan en la página local de Google. Si son positivas, estas reseñas ayudarán a mejorar la confianza y credibilidad de una marca.

Participa en nuestro sorteo enviando un email con tu nombre y el asunto «Sorteo AUDITORÍA SEO». Se realizara un sorteo cada mes.