Puede hacer todo tipo de cosas asombrosas cuando agrega un campo personalizado a las taxonomías en WordPress . El truco es realmente descubrir cómo hacerlo. De forma predeterminada, una taxonomía en WordPress tiene cuatro campos que puede ingresar. Ellos son:
- Título
- Babosa
- Padre
- Descripción
Pero, ¿qué sucede si desea agregar un campo personalizado a las taxonomías?
Puede agregar campos personalizados a los medios en WordPress. También puede mostrar campos personalizados de una publicación específica si lo desea.
A lo largo de los años, WordPress realmente ha cambiado, por lo que los dos ejemplos a continuación pueden variar con el paso del tiempo. En este artículo, le mostraré cómo agregar campos personalizados a las taxonomías en WordPress.
En realidad, hay un par de maneras de hacer esto. Puede usar un complemento, o simplemente puede codificar todo. La elección es suya y dependerá de la comprensión que tenga de la ubicación del código. Sin embargo, incluso la solución del complemento requiere la colocación de código. Echemos un vistazo a las taxonomías predeterminadas en WordPress y algunas formas de agregar campos personalizados.
Agregar campos personalizados a las taxonomías mediante un complemento
Para agregar campos personalizados con un complemento, lo primero que debe hacer es instalar y activar el complemento Campos personalizados avanzados .
El complemento ACF le permite agregar campos personalizados a pedido, agregarlos en cualquier lugar y mostrarlos en todas partes. Es un complemento muy intuitivo, y si eres un principiante en los campos personalizados de WordPress y cómo funcionan las taxonomías, este es el camino a seguir.
Una vez que el complemento se haya instalado y activado, desea dirigirse a la pantalla de administración de campos personalizados. Para llegar allí, haga clic en Campos personalizados > Agregar nuevo.
Ahora agregue los campos que le gustaría ver al editar un término de taxonomía . Voy a hacer uno para el ejemplo. Puedes añadir tantos como quieras. Luego, en «Ubicaciones», seleccione la regla del término de taxonomía y elija el valor correspondiente para mostrar este grupo de campos.
Una vez que haya creado un grupo de campos y lo haya asignado para que aparezca para un término de taxonomía, puede continuar. La edición de los valores de campo se realiza navegando a la taxonomía adecuada.
Por ejemplo, si ha asignado su grupo de campo a categorías de publicaciones, vaya a Publicaciones > Categorías.
Ahora desea mostrar el campo. Incluso la forma de principiante, con el uso del complemento, implicará algo de código.
Para hacer esto, debe personalizar el HTML para un término de taxonomía de WordPress. Esto se puede hacer fácilmente editando el archivo category.php , tag.php o taxonomy.php en su tema. Dependiendo de su tema, también puede usar partes de plantilla o filtros para personalizar el HTML.
Todos estos archivos se pueden encontrar en la sección «Editor de temas». Para acceder a esto, haga clic en Apariencia > Editor de temas.
Para el siguiente ejemplo, muestro cómo modificar la plantilla category.php del tema veintisiete y mostrar tanto la imagen de categoría como el color en una etiqueta de estilo.
Haga clic en category.php e ingrese el siguiente código.
123456789101112131415dieciséis1718192021222324252627282930313233343536<?php
/**
* The template for displaying category archive pages
*
* @link https://codex.wordpress.org/Template_Hierarchy
*
* @package WordPress
* @subpackage Twenty_Seventeen
* @since 1.0
* @version 1.0
*/
get_header();
// get the current taxonomy term
$term
= get_queried_object();
// vars
$image
= get_field(
'image'
,
$term
);
$color
= get_field(
'color'
,
$term
);
?>
<style type=
"text/css"
>
.entry-title a {
color: <?php
echo
$color
; ?>;
}
<?php
if
(
$image
): ?>
.site-header {
background-image: url(<?php
echo
$image
[
'url'
]; ?>);
}
<?php
endif
; ?>
</style><div
class
=
"wrap"
>
<?php
// Remaining template removed from example ?>
Nota: Al editar un campo WYSIWYG (Lo que ve es lo que obtiene) en un término de taxonomía, es posible que la función de inserción automática no funcione. Esto se debe al código dentro del núcleo de WordPress, que limita la funcionalidad de inserción automática solo a las publicaciones. Aquí hay una solución que debería funcionar la mayor parte del tiempo. Un WYSIWYG es algo así como Elementor o Editor visual .
Ingrese lo siguiente en su archivo category.php :
12345678910<?php
// vars
$queried_object
= get_queried_object();
$taxonomy
=
$queried_object
->taxonomy;
$term_id
=
$queried_object
->term_id;
$GLOBALS
[
'wp_embed'
]->post_ID =
$taxonomy
.
'_'
.
$term_id
;
?>
Este código establecerá un post_ID personalizado y permitirá que WP cargue la inserción.
Agregar campos personalizados a taxonomías usando código
Nota: Esto es para usuarios avanzados, así que tenga cuidado si no sabe o no entiende dónde colocar el código en sus archivos php.
Básicamente, WordPress le proporciona dos ganchos para crear campos personalizados que se mostrarán al agregar o editar nuevos términos a sus taxonomías. Estas taxonomías también pueden ser categorías o etiquetas predeterminadas.
Crear el término
Puede crear el término y tener un gancho de acción.
123<?php
do_action(
"{$taxonomy}_add_form_fields"
, string
$taxonomy
);
Puede usar el parámetro $taxonomy en nuestra propia función. Esto se puede usar para una verificación adicional si estamos en la pantalla de taxonomía correcta.
Edición del término
Ahora que ha creado un nuevo término, puede editarlo. Estamos usando otro enlace de acción para agregar campos personalizados a las taxonomías.
[ht_message mstyle=”info” title=”” show_icon=”” id=”” class=”” style=”” ]<?php
do_action( “{$taxonomy}_edit_form_fields”, objeto $etiqueta, string $taxonomy);[/ht_message]
Lo que hace este gancho es proporcionarte 2 parámetros: $etiqueta y $taxonomía . El primero, $tag , es el objeto del que obtendremos el id de nuestro término. Esto se puede usar para obtener el valor actual de su campo.
Guardar el término
Ya sea que esté creando o editando un término, desea guardar correctamente su nuevo valor para que pueda usarse en todo su sitio. Hay dos ganchos diferentes que puede usar para esos escenarios al guardar. Ellos son:
[ht_message mstyle=”info” title=”” show_icon=”” id=”” class=”” style=”” ]<?php
do_action( “editado_{$taxonomía}”, int $term_id, int $tt_id );
do_action( “created_{$taxonomy}”, int $term_id, int $tt_id );[/ht_message]Para usar esos ganchos con la taxonomía personalizada que creó, o algunas otras taxonomías existentes (categorías o etiquetas), debe reemplazar {$taxonomy} con su nombre de taxonomía registrado.
Agregar un campo de imagen a las categorías
Entonces, con esa información en su lugar, hagamos un ejemplo juntos. En el siguiente ejemplo, agregaremos un campo de imagen a las categorías.
Crear la categoría
Primero, agregue el campo de imagen a la categoría, que se usa al crear una nueva categoría:
123456789101112131415dieciséis17&amp;lt;?php
/**
* Adding Image Field
* @return void
*/
function
category_add_image(
$term
) {
?&amp;gt;
&amp;lt;div
class
=
"form-field"
&amp;gt;
&amp;lt;label
for
=
"taxImage"
&amp;gt;&amp;lt;?php _e(
'Image'
,
'yourtextdomain'
); ?&amp;gt;&amp;lt;/label&amp;gt;
&amp;lt;input type=
"text"
name=
"taxImage"
id=
"taxImage"
value=
""
&amp;gt;
&amp;lt;/div&amp;gt;
&amp;lt;?php
}
add_action(
'category_add_form_fields'
,
'category_add_image'
, 10, 2 );
Nota: cada campo en esta pantalla está envuelto con un div.form-field, por lo que estoy usando la misma estructura HTML aquí.
Edición de una categoría
123456789101112131415dieciséis1718192021222324&amp;lt;?php
/**
* Edit Image Field
* @return void
*/
function
category_edit_image(
$term
) {
// put the term ID into a variable
$t_id
=
$term
-&amp;gt;term_id;
$term_image
= get_term_meta(
$t_id
,
'image'
, true );
?&amp;gt;
&amp;lt;tr
class
=
"form-field"
&amp;gt;
&amp;lt;th&amp;gt;&amp;lt;label
for
=
"taxImage"
&amp;gt;&amp;lt;?php _e(
'Image'
,
'yourtextdomain'
); ?&amp;gt;&amp;lt;/label&amp;gt;&amp;lt;/th&amp;gt;
&amp;lt;td&amp;gt;
&amp;lt;input type=
"text"
name=
"taxImage"
id=
"taxImage"
value=
"&amp;lt;?php echo esc_attr( $term_image ) ? esc_attr( $term_image ) : ''; ?&amp;gt;"
&amp;gt;
&amp;lt;/td&amp;gt;
&amp;lt;/tr&amp;gt;
&amp;lt;?php
}
add_action(
'category_edit_form_fields'
,
'category_edit_image'
, 10 );
Puede ver que todos los campos están envueltos dentro de una fila de tabla tr con th para la etiqueta y td para el campo. Tenemos acceso a nuestro objeto de término para que podamos obtener el ID de término para obtener el campo de imagen.
Para obtener el campo de la imagen, está utilizando la función get_term_meta , que es muy similar a la función get_post_meta . Puede leer más sobre esa función en la referencia de código de WordPress .
Guardar la imagen
El paso final es crear una función que guardará el enlace que se agrega a su campo:
123456789101112131415dieciséis&amp;lt;?php
/**
* Saving Image
*/
function
category_save_image(
$term_id
) {
if
( isset(
$_POST
[
'taxImage'
] ) ) {
$term_image
=
$_POST
[
'taxImage'
];
if
(
$term_image
) {
update_term_meta(
$term_id
,
'image'
,
$term_image
);
}
}
}
add_action(
'edited_category'
,
'category_save_image'
);
add_action(
'create_category'
,
'category_save_image'
);
Puede ver que en esta función está comprobando si su campo de imagen se publica utilizando la variable global $_POST . Si eso es cierto, está obteniendo el enlace a la imagen y la está guardando usando la función update_term_meta . Puede obtener más información sobre esa función en esta página de referencia del código de WordPress .
Ahí tienes Como puede ver, agregar un campo personalizado a las taxonomías en WordPress se puede hacer de varias maneras.
Nuevamente, WordPress cambia constantemente , por lo que sus pasos pueden variar aquí y allá, pero esta página de referencia le da una buena idea. Si usa la técnica del complemento para agregar un campo personalizado a las taxonomías, entonces debería estar listo para continuar sin importar qué.
¿Has jugado con campos personalizados? ¿Crees que las taxonomías en WordPress son demasiado complicadas para ti?