Taxonomías personalizadas en wordpress

Una taxonomía en wordpress sirve para clasificar contenido.
WordPress incluye dos taxonomías para clasificar las entradas: categorías y etiquetas.

«Las categorías permitían una agrupación amplia de temas de las entradas, pero cuando querías describir una entrada en términos más específicos necesitabas utilizar más categorías. Esto daba como resultado grandes listas de categorías dentro del blog y grandes listas en los Widgets de categorías.

Ahora tenemos etiquetas también.

Las etiquetas son similares a las categorías pero generalmente son utilizadas para describir tus publicaciones con más detalle.» – Categorías vs. Etiquetas – en.support.wordpress.com.

Las páginas se pueden clasificar con relación jerárquica – padre e hijo – por ejemplo una página llamada «programación» pueden servir como base para agrupar páginas más detalladas como «Ruby», «PHP», «JavaScript».

Dependiendo del comportamiento que queramos para el contenido es probable que necesitemos crear otras taxonomías – en particular si utilizamos tipos de entrada personalizados -.

Registrar una taxonomía

Al igual que con las entradas personalizadas es posible registrar la taxonomía en el tema utilizando el archivo functions.php o hacer un plugin.

Para mantener la flexibilidad de cambiar el tema sin perder la funcionalidad prefiero hacer un plugin.
Para registrar una taxonomía utilizamos la función register_taxonomy.

<?php
   register_taxonomy($taxonomia, $objetos, $parametros);
?>

Parámetros de register_taxonomy

El primer parámetro es el nombre de la taxonomía.
Si utilizas varias taxonomías o si crees que es probable que el nombre de tu taxonomía sea el mismo que el nombre de un plugin puedes utilizar un prefijo para prevenir este inconveniente.

<?php
   register_taxonomy('lenguaje', $objetos, $parametros);
?>

En el segundo parámetro se definen el tipo – o los tipos – de entrada donde se va a utilizar la taxonomía.
Los valores pueden ser post para las entradas, page para las páginas, attachment para los archivos adjuntos, revision para las revisiones, nav_menu_item para los menús de navegación o el nombre de una entrada personalizada – en minúsculas sin espacios en blanco – si estás utilizando entradas personalizadas.

<?php
   register_taxonomy('lenguaje', array('post', 'page'), $parametros);
?>

El tercer parámetro de register_taxonomy es donde se indica la manera en la cuál va a funcionar la taxonomía.
Los valores permitidos son:

Valor

Descripción

labels

Arreglo con etiquetas – cadenas de texto – donde se define cómo se va a visualizar la taxonomía en la sección de administración.
Si la taxonomía no es jerárquica se va a mostrar de manera parecida a las etiquetas.
Si la taxonomía es jerárquica se va a mostrar de manera similar a las categorías.
Los valores pueden ser *:
name: Nombre de la taxonomía, generalmente en plural. Ej. Categorías.
singular_name: Nombre para un elemento de la taxonomía, nombre en singular de la taxonomía. Ej. Categoría.
menu_name: Nombre del menú. Si no se establece utiliza el valor definido en name.
all_items: Texto que se utiliza para visualizar todos los términos de la taxonomía. Ej. Todas las Etiquetas.
edit_item: Texto que se utiliza para editar un término. Ej. Editar Categoría.
view_item: Texto que se utiliza para visualizar un término. Ej. Ver Categoría.
update_item: Texto que se utiliza cuando se actualiza un término. Ej. Actualizar Categoría.
add_new_item: Texto que se utiliza cuando se agrega un nuevo término. Ej. Agregar Nueva Categoría.
new_item_name: Texto para mostrar cuando se agrega un nuevo nombre de término. Ej. Nuevo Nombre de Categoría.
parent_item: Texto para mostrar el término padre (utilizado con taxonomías jerárquicas). Ej. Categoría Superior.
parent_item_colon: Texto para mostrar el término padre seguido de dos puntos (utilizado con taxonomías jerárquicas). Ej. Categoría Superior:
search_items: Texto que se utiliza para buscar elementos. Buscar Categorías.
popular_items: Encabezado para la nube de etiquetas de las más populares (utilizado con taxonomías no jerárquicas). Ej. Etiquetas Más Utilizadas.
separate_items_with_commas:Texto que indica que que se tienen que introducir elementos separados por coma en la caja meta – metabox -. Sólo se utiliza con taxonomías no jerárquicas. Ej. Separar etiquetas con comas.
add_or_remove_items: El texto para agregar o eliminar elementos que es utilizado en la caja meta – metabox – cuando JavaScript se encuentra deshabilitado. Sólo se utiliza con taxonomías no jerárquicas. Ej. Agregar o eliminar etiquetas.
choose_from_most_used: Texto que se muestra para elegir una taxonomía de los términos más utilizados. Sólo se utiliza en taxonomías no jerárquicas. Ej. Elige de las etiquetas más utilizadas.
not_found: Texto que se muestra cuando se utiliza choose_from_most_used pero no hay contenido para visualizar. Sólo se utiliza con taxonomías no jerárquicas. Ej. No se encontraron etiquetas.
* Si no se establece un valor utiliza los valores de las categorías – si la taxonomía es jerárquica – o los valores de las etiquetas – si la taxonomía no es jerárquica.

public

Determina si la taxonomía se puede consultar de manera publica o únicamente en el área de administración.
Los valores pueden ser true o false.

show_ui

Indica si la taxonomía es visible en la interfaz de administración
Si no se establece el valor utiliza el valor definido en public.

show_tagcloud

Indica si la taxonomía se puede seleccionar en el widget de la etiqueta de nubes.
Si no se establece utiliza el valor definido en show_ui.

meta_box_cb

Nombre para una función callback para la visualización en la caja meta – metabox -.
De manera predefinida utiliza post_categories_meta_box() para las taxonomías jerárquicas y post_tags_meta_box() para las taxonomías no jerárquicas. No se muestra la caja meta si se establece un valor false.

show_in_nav_menus

Indica si permite que los términos de la taxonomía se utilicen en los menús de navegación.
Si no se establece utiliza el valor definido en public.

hierarchical

Define si la taxonomía es jerárquica (como las categorías)- true – o no (como las etiquetas) – false -.

update_count_callback

Permite asociar una función callback que se manda llamar cada vez que modifica el número de términos.

query_var

De manera predeterminada va a utilizar el nombre de la taxonomía, pero se puede establecer como falso para prevenir consultas (utilizando WP_Query).

rewrite

Permite ajustar la estructura de los enlaces permanentes – permalinks – en las plantillas que utilizan los términos de la taxonomía.

Puede ser true, false o un arreglo de valores. Los valores del arreglo son:
slug: El término (slug) que quieres como prefijo en las plantillas de los términos de la taxonomía.
with_front: Si quieres que los términos utilicen el nombre en las preferencias de los permalinks (true o false).
hierarchical: Si quieres que se puedan implementar URLs jerárquicos (true o false).
ep_mask: Asigna una máscara de punto final a la taxonomía. De manera predefinida es EP_NONE.
Si no se asigna la máscara de punto final – EP_MASK – los permalinks no van a funcionar. – Resumen de los puntos finales en wordpress.

capabilities

Permite definir el rol del usuario que tiene acceso a utilizarlo.
De manera predeterminada los usuarios que tengan la capacidad manage_categories pueden crear editar y eliminar términos
Los usuarios que tengan la capacidad edit_posts pueden asignar los términos a una publicación
manage_terms: Capacidad para visualizar los términos en el área de administracion.
edit_terms: Permite crear y editar términos
delete_terms: Permite eliminar términos.
assign_terms: Permite asignar términos a una publicación (al crear y / o editar).

sort

Define si la taxonomía debe recordar el orden en el cuál los elementos – de la taxonomía – fueron asociados a los objetos – entradas -.

Para poder utilizar la taxonomía definida, tenemos que enganchar – crear un gancho / hook – register_taxonomy cuando el evento init suceda.

El siguiente ejemplo funciona para clasificar páginas y / o entradas con distintos lenguajes.
La taxonomía lenguajes se va a comportar como etiquetas – no va a utilizar jerarquías – y, si se habilita en los enlaces permanentes, la taxonomía se va a visualizar como lenguaje en el URL.

<?php

/*
  Definimos la función que se va a encadenar al evento init. 
*/

function registrar_taxonomia() {
/*
  Utilizamos un arreglo para almacenar las etiquetas 
  que se van a visualizar en la interfaz.
*/

 $etiquetas = array(
   'name' => __( 'Lenguajes' ),
   'singular_name' => __( 'Lenguaje' ),
   'add_new' => __( 'Nuevo lenguaje' ),
   'all_items' => __('Todos los lenguajes'),
   'add_new_item' => __( 'Agregar lenguaje' ),    
   'edit_item' => __( 'Editar lenguaje' ),
   'new_item' => __( 'Nuevo lenguaje' ),
   'view_item' => __( 'Ver lenguajes' ),
   'search_items' => __( 'Buscar lenguajes' ),
   'update_item' => __('Actualizar lenguaje'),
   'separate_items_with_commas' => __('Separa los lenguajes con comas'),
   'popular_items' => __('Lenguajes más utilizados'),
   'choose_from_most_used' => __('Elige entre los lenguajes más utilizados'),
   'add_or_remove_items' => __( 'Agregar o quitar lenguajes'),
   'not_found' => __('No se encontraron lenguajes'),
   'not_found_in_trash' => __('No se encontraron lenguajes en la basura'), 
   'menu_name' => __("Lenguajes")
 );

/*
  Definimos las propiedades de comportamiento. 
  Para asignar las etiquetas utilizamos el nombre del arreglo. 
  De esta manera queda un poco más legible el código. 
*/  
  $opciones = array(
      'public' => true,
      'labels' => $etiquetas,
      'hierarchical' => false,
      'rewrite' => array( 'slug' => 'lenguaje', 'with_front' => true )      
);

/*
  Registramos el nombre de la taxonomía, lo asociamos
  a los tipos de entrada donde queramos utilizar la taxonomía
  y establecemos las opciones. 
*/

  	register_taxonomy('lenguaje', array( 'page', 'post' ), $opciones);
}

/*
  Creamos el hook para mandar registrar la taxonomía.
*/
add_action('init', 'registrar_taxonomia', 0);

?>

Plantilla

Si queremos una plantilla para visualizar las publicaciones que están clasificadas con esta taxonomía necesitamos crear el archivo: taxonomy-{nombre-taxonomia}.php
En este caso utilicé taxonomy-lenguaje.php para visualizar las entradas que están clasificadas con la taxonomía.
Si vas a utilizar la plantilla, ve a la sección de ajustes > enlaces permanentes – permalinks – y vuelve a guardar la configuración que tienes – para que se actualicen las reglas de rescritura / rewrite rules -.

<?php get_header(); ?>
<div class='row'>
      <h2>Lenguajes</h2>
      <!-- Loop -->
      <div class='post-group default row'>
      	<div class='nine columns post-group-content'>
        	<?php
        	if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
            <!-- Visualización del resumen de la entrada -->
            <article <?php post_class( 'leftaside' ); ?>>
            	<header class="post-header">
            		<h1 class="post-title entry-title">
            			<a href="<?php the_permalink() ?>"><?php the_title(); ?></a>
            		</h1>
            	</header>
            	<div class="row">

            		<section class="post-content">
            			<p class="hatom-meta meta date updated"> <time datetime="<?php echo the_time('Y-m-d'); ?>" ><?php the_time('m/d/Y'); ?></time>
            			<?php the_post_thumbnail( 'medium-thumbnail' ); ?>
            			<?php the_excerpt('Leer Más...'); ?>
            		</section>
            	</div>              
              <div class='lenguajes'>
                <?php echo get_the_term_list( $post->ID, 'lenguaje', '', ', ', '' ); ?>
              </div>
            </article>        		
            <!-- Visualización del resumen de la entrada -->
        	<?php endwhile; ?>
        	<?php endif; ?>
      	</div>
      </div>
      <!-- Loop -->      
  </div>
  <?php get_sidebar(); ?>
<?php get_footer(); ?>

get_the_term_list se va a encargar de visualizar las taxonomías – en este caso cada lenguaje – con las que está asociada cada entrada.

Uso

Una vez que se tiene definido el archivo de la taxonomía se incluye en la página de plugins de wordpress.

01-habilitar-taxonomia

Habilitar la taxonomía personalizada desde el menú de plugins

Una vez hecho esto la taxonomía debe de estar disponible en los tipos de publicación para los cuáles se habilitó.

Taxonomía personalizada en el menú de páginas

Taxonomía personalizada en el menú de páginas

02-taxonomia-en-entradas

Taxonomía personalizada en el menú de entradas

Dependiendo de cómo se habilitó el comportamiento (como categorías o etiquetas) se va a visualizar en el menú de creación / edición de los tipos de entrada asociados.

04-taxonomia-en-entrada

Asociar taxonomías con una entrada.

Puedes descargar la taxonomía y la plantilla, además de archivos que pueden funcionar como base para que hagas tus taxonomías de github o bitbucket.

4 comentarios en “Taxonomías personalizadas en wordpress

  1. fxbrokersEn

    currency-trading-brokers.com/forex-comparisons-ratings-reviews-azerbaijan.html Müstəqil şərhləri haqqında xarici-əcnəbi mübadiləsi brokerləri-maklerləri.

  2. starsera

    The cleaning business carries out cleaning of rooms of various sizes and also arrangements.

    The firm’s professionals supply cleaning up with the aid of modern technologies, have unique equipment, and likewise have accredited detergents in their arsenal. Along with the above advantages, wines supply: favorable prices; cleansing in a short time; premium quality outcomes; greater than 100 favorable reviews. Cleaning workplaces will certainly aid keep your work environment in order for the most efficient job. Any kind of business is very crucial atmosphere in the group. Cleaning solutions that can be bought inexpensively currently can aid to prepare it as well as supply a comfortable room for labor.

    If necessary, we leave cleaning up the cooking area 2-3 hrs after placing the order. You get cleansing as soon as possible.

    We provide professional housekeeping maid service for exclusive clients. Using European equipment and also licensed tools, we accomplish maximum results as well as offer cleansing in a short time.

    We offer price cuts for those that use the solution for the first time, in addition to favorable regards to participation for regular clients.

    Our pleasant team offers you to obtain accustomed with positive regards to participation for business customers. We responsibly approach our activities, tidy utilizing specialist cleansing products and specific tools. Our workers are educated, have medical publications and are familiar with the nuances of getting rid of complicated and also hard-to-remove dust from surfaces.

    We offer top notch cleansing for large enterprises and also small firms of different directions, with a discount of as much as 25%.

  3. audith2

    Представим, вы обладатель нового сайта, который имеет приятный дизайнерские решения, удобную навигацию и нужную для покупателей информацию. Но сервис ни кто не посещает. Что делать? Если вы владеете собственным делом мы поможем вам создать Пейдж. бесспорно, ни одно настоящее либо виртуальное предприятие не может продвигаться независимо. Каждой фирме необходимо помощь в приобретении популярности, а во Мировой компьюторной паутине без нее решительно не быть из-за яростной конкурентной борьбы.Мы занимаемся разработкой продающегося сайта. Мы готовы запустить полновесный интернет сайт в течение 6 суток. Помимо предоставления рабочих online-сайтов, мы осуществляем перечень работ тех. поддержки: уместное продление хостинга и домена, добавление наполнения на вебсайт, размещения известий. Наши услуги помогают вам стать фаворитом на необъятных просторах интернета.

    продвижение сайта сша

  4. hzeminsmum

    With Houzz dominating the internet search engine results of your most important keyword phrase, it is crucial that when internet traffic mosts likely to Houzz that you will certainly show in addition to their directory site. We can help – Houzz followers New-York :
    SEO for Houzz account

    Right Below at HouZzilla we have a designated group of marketer that especially solution Houzz management as well as optimization. We are all «Qualified Houzz Marketing And Advertising Professionals»- a Houzz marketing and advertising training program with a qualification examination.

    As professionals in Houzz account management as well as optimization, Client HouZzilla regularly obtains customers leading natural Houzz placements consisting of in Henderson, as well as in unrestricted communities across the country.

Deja un comentario

Tu dirección de correo electrónico no será publicada.