Custom metabox para imagenes
Custom metabox para imagenes
Para un proyecto nuevo, necesitaba la forma de tener un lista de todas las imágenes subidas al WordPress para seleccionar la que queria. La idea es subir un pack de imágenes y luego ir escribiendo los post.
Después de Googlear un poco encontré la solución, sólo había que modificar un poco el código para conseguir un menú desplegable debajo del editor de texto donde listará todas las imágenes subidas.
La solución empleada es lo que se llama Meta Box, que es un “bloque” nuevo que se puede añadir a la sección de edición de páginas/post en la pantalla de admistración de WordPress.
Poner el siguiente código en functions.php
add_action("admin_init", "images_init");
add_action('save_post', 'save_images_link');
function images_init(){
add_meta_box("dibujos-images", "Elegir imagen", "images_link", "post", "normal", "low");
}
function images_link(){
global $post;
$custom = get_post_custom($post->ID);
$link = $custom["link"][0];
$count = 0;
echo '<div class="link_header">';
$query_images_args = array(
'post_type' => 'attachment',
'post_mime_type' =>'image',
'post_status' => 'inherit',
'posts_per_page' => -1,
);
$query_images = new WP_Query( $query_images_args );
$images = array();
echo '<select name="link">';
echo '<option class="images_select">SELECIONA LA IMAGEN</option>';
foreach ( $query_images->posts as $file) {
if($link == $images[]= $file->guid){
echo '<option value="'.$images[]= $file->guid.'" selected="true">'.$images[]= $file->guid.'</option>';
}else{
echo '<option value="'.$images[]= $file->guid.'">'.$images[]= $file->guid.'</option>';
}
$count++;
}
echo '</select><br /></div>';
echo '<p>Seleciona la imagen de la lista para adjuntarla al post.</p>';
echo '<div class="images_count"><span>Archivos:</span> <b>'.$count.'</b></div>';
}
function save_images_link(){
global $post;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE){ return $post->ID; }
update_post_meta($post->ID, "link", $_POST["link"]);
}
add_action( 'admin_head', 'images_css' );
function images_css() {
echo '<style type="text/css">
.images_select{
font-weight:bold;
background:#e5e5e5;
}
.images_count{
font-size:9px;
color:#0066ff;
text-transform:uppercase;
background:#f3f3f3;
border-top:solid 1px #e5e5e5;
padding:6px 6px 6px 12px;
margin:0px -6px -8px -6px;
-moz-border-radius:0px 0px 6px 6px;
-webkit-border-radius:0px 0px 6px 6px;
border-radius:0px 0px 6px 6px;
}
.images_count span{color:#666;}
</style>';
}
function images_file_url(){
global $wp_query;
$custom = get_post_custom($wp_query->post->ID);
echo '<a href="'.$custom['link'][0].'"><img src="'.$custom['link'][0].'" /></a>';
}
Os quedará algo así:
Para pintar la imágen insertada colocar este fragmento de código donde queraís que se vea
<?php images_file_url() ?>
Esto mismo se puede hacer con otro tipo de archivos, musica, videos, pdf etc….
También te puede interesar:
-
Una de las funciones de WordPress es devolver cualquier archivo adjunto a un post. Está función …
-
Últimamente la cosa va snippets en WordPress y debido a que estoy desarrollando varias webs y po …
-
Estaba leyendo el blog de SEOMOZ y me he encontrado con un artículo que nos explica como ver los …
-
Conseguir un buen posicionamiento web para los artículos de la home de un blog o en los primero …
-
La mayoría de los themes de wordpress no vienen preparados para un correcta estructura de los H …
http://wpsnipp.com/index.php/functions-php/attach-pdf-files-to-post-with-custom-metabox-file-selection/

