Publiqué un Cómo hacerlo hace una semana enlace
espero que esto ayude.
Ohad.
Aquí están los detalles de la publicación:
Lo primero que debemos hacer es agregar los campos adicionales al formulario de edición de categorías usando el gancho edit_category_form_fields y usamos una función simple que imprimirá los campos adicionales.
<?php
//add extra fields to category edit form hook
add_action ( 'edit_category_form_fields', 'extra_category_fields');
//add extra fields to category edit form callback function
function extra_category_fields( $tag ) { //check for existing featured ID
$t_id = $tag->term_id;
$cat_meta = get_option( "category_$t_id");
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="cat_Image_url"><?php _e('Category Image Url'); ?></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'] : ''; ?>"><br />
<span class="description"><?php _e('Image for category: use full url with '); ?></span>
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra1"><?php _e('extra field'); ?></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'] : ''; ?>"><br />
<span class="description"><?php _e('extra field'); ?></span>
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra2"><?php _e('extra field'); ?></label></th>
<td>
<input type="text" name="Cat_meta[extra2]" id="Cat_meta[extra2]" size="25" style="width:60%;" value="<?php echo $cat_meta['extra2'] ? $cat_meta['extra2'] : ''; ?>"><br />
<span class="description"><?php _e('extra field'); ?></span>
</td>
</tr>
<tr class="form-field">
<th scope="row" valign="top"><label for="extra3"><?php _e('extra field'); ?></label></th>
<td>
<textarea name="Cat_meta[extra3]" id="Cat_meta[extra3]" style="width:60%;"><?php echo $cat_meta['extra3'] ? $cat_meta['extra3'] : ''; ?></textarea><br />
<span class="description"><?php _e('extra field'); ?></span>
</td>
</tr>
<?php
}
Como puede ver, agregué 4 campos nuevos y todos ellos están en una matriz Cat_meta [clave] porque de esa manera solo creamos una fila en la tabla de opciones para guardar todos los campos adicionales de la categoría en lugar de una fila para cada uno campo.
A continuación, debemos guardar los campos adicionales en la base de datos una vez que el usuario envíe el formulario de edición de categoría y lo hacemos usando "edited_category" con una función que se ejecutará en cada uno de los campos enviados y los insertará en la base de datos usando La función update_option, como esta:
<?php
// save extra category extra fields hook
add_action ( 'edited_category', 'save_extra_category_fileds');
// save extra category extra fields callback function
function save_extra_category_fileds( $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];
}
}
//save the option array
update_option( "category_$t_id", $cat_meta );
}
}
En el código anterior puede ver que todos los campos adicionales que hemos agregado están almacenados en la tabla de opciones de la base de datos con el nombre 'category_ID', donde ID es la identificación de la categoría específica que acabamos de editar y eso significa que puede llamar a estos datos en nuestros complementos o archivos de temas fácilmente usando la función get_option.
digamos, por ejemplo, mi ID de categoría es 25, entonces mi código se verá como
<?php $cat_data = get_option('category_25'); ?>
Como dije al principio, necesito mostrar una imagen diferente para cada categoría, así que en ese caso agregué estas pocas líneas de código a la categoría de mi tema. justo después del código que muestra el título de la categoría:
<?php
//first get the current category ID
$cat_id = get_query_var('cat');
//then i get the data from the database
$cat_data = get_option("category_$cat_id");
//and then i just display my category image if it exists
if (isset($cat_data['img'])){
echo '<div class="category_image"><img src="'.$cat_data['img'].'"></div>';
}
Agradable y fácil y todos hemos terminado. El resultado debería ser similar a este: