Todas las mentes viagra generico espana del mundo cialis generico espana recomiendan viagra contrareembolso prevenir problemas cialis contrareembolso

Cuando creamos un tema nos gusta dar todas las opciones para que un tema sea usable, 100% customizable y en resumidas cuentas fácil de usar que es por lo que escogemos a menudo wordpress para nuestras webs. Para ello usamos metabox.io, pero tiene sus limitaciones. Una de ellas es el poder añadir campos personalizados a las taxonomías. Aquí os dejo una solución para implementar en nuestro functions.php.

Este dato es importante ya que el nombre de la taxonomía se incluye en los add_action y se deberá poner el nombre correspondiente a la taxonomía que queremos usar. Por ejemplo si tenemos: tipo_add_form_fields y lo querenoms aplicar a categorias deberíamos poner: category_add_form_fields.

Primero deberemos definir la función para mostrar el campo en la página de registro de una taxonomía que puede ser por defecto (categorías o etiquetas) o taxonomías creadas por nosotros de posts o de custom post types. En este caso usaremos una propia llamada tipo.

<?php
/* Página de añadir un término */
function taxonomy_add_new_meta_field() {
    ?>
    <div class="form-field">
    <label for="term_meta[tax_field]">Custom field</label>
    <input type="text" name="term_meta[tax_field]" id="term_meta[tax_field]" />
    <p class="description">Description of the field</p>
    </div>
<?php
}
 
add_action( 'tipo_add_form_fields', 'taxonomy_add_new_meta_field', 10, 2 );
?>

Ahora deberemos definir la función para la página de editar un término:

<?php
function taxonomy_edit_meta_field($term) {
    // Ponemos el id en una variable
    $t_id = $term->term_id;
 
    // Pedidmos los valores existentes, nos devuelve un array
    $term_meta = get_option( "taxonomy_$t_id" );
    ?>
    <tr class="form-field">
    <th scope="row" valign="top"><label for="term_meta[tax_field]">Custom field</label></th>
        <td>
            <input type="text" name="term_meta[tax_field]" id="term_meta[tax_field]">
            <p class="description">Description of the field</p>
        </td>
    </tr>
    <?php
}
add_action( 'tipo_edit_form_fields', 'taxonomy_edit_meta_field', 10, 2 );
?>

Finalmente sólo tenemos que registrar las acciones de crear y guardar valores de taxonomías:

<?php
function save_taxonomy_custom_meta( $term_id ) {
    if ( isset( $_POST['term_meta'] ) ) {
        $t_id = $term_id;
        $term_meta = get_option( "taxonomy_$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];
            }
        }
        // Save the option array.
        update_option( "taxonomy_$t_id", $term_meta );
    }
}  
add_action( 'edited_tipo', 'save_taxonomy_custom_meta', 10, 2 );  
add_action( 'create_tipo', 'save_taxonomy_custom_meta', 10, 2 );
?>

Luego para obtener el valor de nuestro campo sólo tenemos que pedirlo amablemente así:

// Recogemos los valores meta de la taxonomía
$term_meta = get_option('taxonomy_'.$term_id);
 
// Cogemos el que nos interesa
$term_meta_tax_field = $term_mate['tax_field'];
Categorías: Wordpress
Etiquetas:,
Si necesitas una url corta puede usar: codygo.es/1371

2 comentarios

  1. Anonimo dice:

    Hola tengo un problema al poner este codigo, lo que introduzca en el campo no me lo guarda

    • mononelo dice:

      Primero ¡perdona pr la tardanza de la respuesta! Después prueba en vez de poner $term_meta = get_option( "taxonomy_$t_id" ); a poner $term_meta = get_option( "taxonomy_".$t_id );. A veces no le gusta de esta forma y necesita que lo separen. ¡Dime si te funciona bien así y lo modifico en el post! ¡Gracias!

Deja un comentario