Cristina Alcantarilla
INFORMÁTICA & DISEÑADORA
Añadir imagenes a categorías o taxonomias en WordPress

Aunque el título de este post indica que podemos añadir una imagen a una categoría o taxonomía o tag o etc en realidad podemos agregar cualquier campo extra que necesitemos en wordpress.

Lo que hacemos es modificar el formulario para editar una categoría y agregarle cualquier campo que necesitemos.

Como agregar dicho campo a una categoría:

Lo primero que necesitamos es la función encargada de agregar dicho campo:
<?php
//hook para agregar campos extras a nuestra categoría
add_action ( ‘edit_category_form_fields’, ‘campos_extras’);
//función encargada de agregar dichos campos
function campos_extras( $tag ) { //le pasamos la variable tag que contiene el id de nuestra categoría
$t_id = $tag->term_id;
$cat_meta = get_option( “category_$t_id”);
?>
<tr>
<th scope=”row” valign=”top”><label for=”cat_Image_url”><?php _e(‘Url de la Imagen’); ?></label></th>
<td>
<input type=”text” name=”Cat_meta[img]” id=”Cat_meta[img]” size=”3″ style=”width:60%;” value=”<?php echo $cat_meta[‘img’] ? $cat_meta[‘img’] : ; ?>”>

<?php _e(‘Imagen para la categoría, usar http://’); ?>
</td>
</tr>
<tr>
<th scope=”row” valign=”top”><label for=”extra1″><?php _e(‘Campo extra’); ?></label></th>
<td>
<input type=”text” name=”Cat_meta[extra1]” id=”Cat_meta[extra1]” size=”25″ style=”width:60%;” value=”<?php echo $cat_meta[‘extra1’] ? $cat_meta[‘extra1’] : ; ?>”>

<?php _e(‘extra field’); ?>
</td>
</tr>

<?php
}
Usaremos un array para guardar todos los valores dentro de la tabla de opciones de nuestro WordPress así solo ocupamos una fila. Ahora necesitamos guardar los cambios de este array y para ello usaremos la siguiente función:
<?php
// hook para guardar los datos
add_action ( ‘edited_category’, ‘guardar_campos_extras’);
// función que guarda los campos extras

function guardar_campos_extras( $term_id ) {
if ( isset( $_POST[‘Cat_meta’] ) ) {
$t_id = $term_id;
$cat_meta = get_option( “category_$t_id”);
$cat_keys = array_keys($_POST[‘Cat_meta’]);
foreach ($cat_keys as $key){
if (isset($_POST[‘Cat_meta’][$key])){
$cat_meta[$key] = $_POST[‘Cat_meta’][$key];
}
}
//Guardamos las opciones
update_option( “category_$t_id”, $cat_meta );
}
}
En  la opción llamada category_$t_id donde $t_id es el id de dicha categoría tendremos un array con todos los datos.

Ahora para recuperar los valores tan solo necesitaremos saber el id de la categoría actual
<?php
//Obtenemos el id de la categoría dentro de $wp_query->query_vars
$cat_id = get_query_var(‘cat’);

//Obtenemos el array desde la base de datos
$cat_data = get_option(“category_$cat_id”);

//y por último mostramos lo que necesitemos
if (isset($cat_data[‘img’]) && $cat_data[‘img’]!=){
echo ‘<img src=”‘.$cat_data[‘img’].'”>’;}

Fácil y super útil!

Ahora que pasa si en realidad queremos agregar un campo a una taxonomía creada en custom post type ? El mecanismo es prácticamente lo mismo, lo único que cambia son algunos hooks y la forma de obtener el id.

Suponiendo que nuestra taxonomie es galleries tal y como me paso a mi los hooks que debemos usar son:
add_action ( ‘galleries_edit_form_fields’, ‘campos_extras’, 10, 2);
add_action( ‘edited_galleries’, ‘guardar_campos_extras’, 10, 2);
Tan solo hay que cambiar galleries por el nombre de su taxonomía.

Para recuperar los datos tenemos que hacer lo siguiente:
$cat_id = get_query_var(‘term_id’);
O también probar con:
$cat_id = $wp_query->queried_object->term_id;

O si es una tag
$cat_id = get_query_var(‘tag_id’);

 

Algunas Fuentes:

info

35 Funciones útiles para functions.php en WordPress

Share Button

Deja un comentario