Crear campos personalizados para taxonomías en Wordpress | Adrenalina

Crear campos personalizados para taxonomías en WordPress

Publicado Por | 07 marzo , 2014 | Blog Adrenalina, SEO Técnico | One Comment
wplupa

¿Cuántas veces hemos querido añadir un campo personalizado a nuestra categorías? Para eso os voy a explicar cómo añadir esta función, primero tenemos de añadir las funciones en el archivo functions.php.

Añadir las funciones

La primera función que añadiremos será la de crear el campo con el siguiente código:

function presenters_taxonomy_custom_fields($tag) {
$t_id = $tag->term_id; // Obtener el ID del término que está editando
//Revisar que el id es el correcto para la taxonomía
$term_meta = get_option( "taxonomy_term_$t_id" ); 
?
<tr class="form-field">
<th scope="row" valign="top">
<label for="Nombre_del_campo">
<?php _e('Nombre_del_campo_que _se_visualizara'); ?>
</label>
</th>
<td>
<input type="text" name="term_meta[Nombre_del_campo]" 
id="term_meta[Nombre_del_campo]" value="<?php 
echo $term_meta[' Nombre_del_campo '] ? 
$term_meta[' Nombre_del_campo '] : ''; ?>"><br />
<span class="description"><?php _e(Descripción del campo'); ?></span>
</td>
</tr>
<?php
}

Aquí marcamos la estructura del campo personalizado, le damos el nombre que tendrá el campo, el nombre que se visualizara y la descripción que queramos mostrar.

La segunda función que añadiremos será la de guardar la información que ponemos en nuestro campo:

function save_taxonomy_custom_fields( $term_id ) {
if ( isset( $_POST['term_meta'] ) ) {
$t_id = $term_id; // Obtener el ID del término que está editando
$term_meta = get_option( "taxonomy_term_$t_id" );
$cat_keys = array_keys( $_POST['term_meta'] );
foreach ( $cat_keys as $key ){
if ( isset( $_POST['term_meta'][$key] ) ){
$term_meta[$key] = $_POST['term_meta'][$key];
}
}
// Guardar la array de opciones
update_option( "taxonomy_term_$t_id", $term_meta );
}
}

Del código anterior podemos ver que el campos adicional que hemos añadido  se guardan en la tabla de opciones de la base de datos con el nombre “taxonomy_term_$t_id”(la variable que añadimos es el id), eso significa que podemos llamar a estos datos en nuestros archivos utilizando la función get_option

La tercera función que añadiremos será para borrar de la base de datos:

function delete_taxonomy_custom_fields( $term_id ) {
if ( isset( $_POST['term_meta'] ) ) {
$t_id = $term_id; // Obtener el ID del término que está editando
$term_meta = get_option( "taxonomy_term_$t_id" );
$cat_keys = array_keys( $_POST['term_meta'] );
foreach ( $cat_keys as $key ){
if ( isset( $_POST['term_meta'][$key] ) ){
$term_meta[$key] = $_POST['term_meta'][$key];
}
}
// Borrar la array de opciones
delete_option( "taxonomy_term_$t_id", $term_meta );
}
}

Si os fijáis lo único que cambiamos es el update por el delete en la última línea de código.

Añadir los hooks

Después añadiremos los hooks de las tres últimas funciones creadas para que se muestren donde deseamos, en nuestro caso lo añadiremos en categorías:

//Añade los campos a la  taxonomía deseada, 
utilizando nuestra función 'presenters_taxonomy_custom_fields'
add_action('category_edit_form_fields',
'presenters_taxonomy_custom_fields', 10, 2 );
// Guarda los campos de la  taxonomía deseada, 
utilizando nuestra función 'save_taxonomy_custom_fields'
add_action('edited_category','save_taxonomy_custom_fields',10,2);
// Borrar los campos de la  taxonomía deseada,
utilizando nuestra función 'delete_taxonomy_custom_fields'
add_action('edited_category','delete_taxonomy_custom_fields', 10, 2 );

El primer hook nos permite añadir el campo a la taxonomía seleccionada, (nosotros la añadimos en categorías) en el primer campo ‘ category_edit_form_fields’ le marcamos donde queremos que se muestre, si quiere añadirlo en otra taxonomía solamente ha de modificar el category por el nombre de la taxonomía que desea, el segundo campo es el nombre de nuestra función creada anteriormente.

En el segundo y tercer hook nos permite guardar/borrar el campo de la taxonomía seleccionada, en el primer campo ‘edited_category’ le marcamos donde queremos guardarlo/borrarlo, si quieres guardarlo/borrarlo en otra taxonomía solamente ha de modificar el category por el nombre de la taxonomía que desea, el segundo campo es el nombre de nuestra función creada anteriormente.

Mostrar el valor del campo creado

Por ultimo necesitaremos mostrar el texto del campo personalizado que hemos creado, lo haremos con la función get_term o wp_get_object_terms, estas dos funciones retornan arrays.

Las usaríamos así:

<?php
$t_id = $term->term_id;
$term_meta = get_option( "taxonomy_term_$t_id" );
$term->name=$term_meta[' Nombre_del_campo '];
Echo  get_ term($term->name);
?>

O así:

<?php
$t_id = $term->term_id;
$term_meta = get_option( "taxonomy_term_$t_id" );
$term->name=$term_meta[' Nombre_del_campo '];
Echo  wp_get_object_terms($term->name);
?>

Autor: francis

  • Nando Alvarado

    Buenos días,
    amigo no consigo que me muestre el campo de la taxonomía a que se puede deber esto?

Estudiamos y analizamos su negocio en profundidad, definimos objetivos y planteamos la estrategia de marketing más adecuada centrándonos en conseguir cada uno de los objetivos propuestos. Solicita Presupuesto Ahora

Uso de cookies

En este sitio web utilizamos cookies propias y de terceros para mejorar nuestros servicios, para que usted tenga la mejor experiencia de usuario y analizar su visita. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.