De vegades volem automatitzar alguns procesos o tenir l’opció d’introduïr un camp i que sempre es mostre al mateix lloc, com per exemple un vídeo. En WordPress tenim els “Custom Fields” (i Custom Pots) per a poder crear nous camps i entrades personalitzades. Si el que volem es crear senzillament un nou camp en la zona d’administració per a poder introduïr una adreça de Youtube o Vimeo, podem fer-ho de la següent forma.
Primerament, i utilitzant un tema fill, anem al “functions.php” i posem un codi semblant al següent:
/*
**** Vídeo per a Diània ****
*/
add_action('add_meta_boxes', 'videoDiania');
function videoDiania() {
add_meta_box('video','Video','el_video','post','normal','high');
}
function el_video() {
global $wpdb, $post;
$value = get_post_meta($post->ID, 'video', true);
echo '<label>Vídeo</label>
<input type="text" name="video" id="video" value="'.htmlspecialchars($value).'" style="width: 100px;" /> ';
}
add_action('save_post', 'guardar_video');
add_action('publish_post', 'guardar_video');
function guardar_video() {
global $wpdb, $post;
if (!$post_id) $post_id = $_POST['post_ID'];
if (!$post_id) return $post;
$price= $_POST['video'];
update_post_meta($post_id, 'video', $price);
}
La funció “el_video” es senzillament el formulari d’introducció de la URL del vídeo en l’entrada. Apareixerà just davall del post que aneu a crear (si no veieu el camp, cal que anigueu a la part de dalt de WordPress, “Opcions de Pantalla”, i marcar aquest nou camp).
Després creem la funció videoDiania
(podeu posar el nom que vulgueu) . Aquesta funció s’afegeix amb un “add_action” a “add_meta_boxes”, que s’encarrega d’afegir precisament els camps “meta” a les entrades.
L’últim troç de codi s’encarrega de guardar aquests camp en la nostra base de dades.
Finalment, inserirem aquest codi en el nostre single.php ( o on desitjeu que es mostre). Utilitzant la funció wp_oembed_get, WordPress s’encarregarà de mostrar el vídeo automàticament.
<?php $video= get_post_meta(get_the_ID(), 'video', true); ?>
<?php echo $embed_code = wp_oembed_get( $video ); ?>