enlace a taxonomía personalizada por id

4 minutos de lectura

A través de una serie de requisitos específicos, me encuentro en la necesidad de vincular a una categoría de taxonomía personalizada utilizando su ID de término…

Tengo esto, que muestra un enlace a todas las taxonomías. Deseo cambiarlo para que solo muestre un enlace a la taxonomía con el término id extraído dinámicamente de un campo personalizado que estoy usando.

$taxonomy = 'event-categories';
$terms = get_terms($taxonomy);
if ($terms) {
foreach($terms as $term) {
echo '<li><a href="http:/mysite.com/events/categories/project-events/' . $term->slug . '">' . $term->name .'</a></li>';
 }
};

esencial necesito “link_to_taxonomy_category(x)” donde x = term_id

Gracias

La función que buscas es get_term_link. Toma un objeto de término, ID o slug y un nombre de taxonomía y devuelve una URL a la página de destino del término.

Como nota al margen, codificar el enlace como lo tiene en el ejemplo anterior es frágil; siempre mantenga su código lo más portátil posible. Si el sitio se mueve a un dominio diferente, ese enlace se romperá. WordPress tiene varias funciones que generan enlaces de forma dinámica en función del entorno de instalación actual. get_term_link es un ejemplo.

Desde el Códice:

$terms = get_terms('species');
echo '<ul>';
foreach ($terms as $term) {
    echo '<li><a href="'.get_term_link($term->slug, 'species').'">'.$term->name.'</a></li>';
}
echo '</ul>';

  • Hola, gracias. De hecho, lo he intentado, pero no pude hacerlo funcionar, lo intentaré de nuevo ahora. El código duro está ahí para mayor claridad en la pregunta …

    – Jorge Luis Borges

    11 de abril de 2012 a las 13:06


  • sí, realmente no puedo entender cómo usar esto, lo intenté $terms = get_terms('event-categories'); echo '<ul>'; foreach ($terms as $term) { echo '<li><a href="'.get_term_link($term->slug, '20').'">'.$term->name.'</a></li>'; } echo '</ul>'; y obtuve el siguiente error “Error fatal capturable: el objeto de la clase WP_Error no se pudo convertir en una cadena en …”

    – Jorge Luis Borges

    11 de abril de 2012 a las 13:08


  • El segundo argumento a favor get_term_link debe ser el nombre de la taxonomía (‘categorías de eventos’ en este caso). Devolverá un objeto de clase WP_Error si el término o taxonomía no existe. Puede capturar el valor del mensaje de error guardándolo en una variable (es decir, $term_link) y examinándolo antes de hacer eco: if ( is_wp_error($term_link) ) echo $term_link->get_error_message();

    – gradyetc

    11 de abril de 2012 a las 13:36


  • $terms = get_terms('event-categories'); echo '<ul>'; foreach ($terms as $term) { echo '<li><a href="'.get_term_link($term->slug, 'event-categories').'">'.$term->name.'</a></li>'; } echo '</ul>';

    – gradyetc

    11 de abril de 2012 a las 14:25

  • Entonces no repita los términos. Si tiene un ID de término, todo lo que necesita es: get_term_link( $term_id, 'event-categories' );. Eso devolverá la URL para el término específico que está buscando en la taxonomía de ‘categorías de eventos’.

    – gradyetc

    11/04/2012 a las 21:33

si tienes solo term_id p.ej: 10taxonomía personalizada series entonces puede usar el siguiente código para obtener el enlace del término de taxonomía.

nota: cambie 10 a su variable para term_id y ‘series’ a su taxonomía.

$term = get_term( 10, 'series' );
$term_link = get_term_link( $term );
echo '<a href="' . $term_link . '">View All</a>';

  • esto solo muestra la categoría predeterminada y no la taxonomía personalizada.

    – Vlogs de TI

    4 de septiembre de 2016 a las 7:55

  • en el segundo parámetro de get_term() pase el nombre de la taxonomía.

    – Aamer Shahzad

    4 sep 2016 a las 11:37

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad