Cómo mostrar información de categoría desde un post personalizado

19 nov 2010, 15:37:17
Vistas: 14.3K
Votos: 2

He creado una página que utiliza posts personalizados: http://www.africanhealthleadership.org/resources/toolkit/

Cada herramienta (Preparación, Evaluación, etc.) es un post personalizado. En el Admin de WP, cada herramienta es una categoría; cada categoría tiene un campo "descripción". Me gustaría mostrar esas descripciones en la página del Toolkit. Intenté usar esto y no se mostró nada: <?php echo category_description( $category ); ?>

Actualmente, las descripciones están hard-codeadas en la página. La de preparación comienza con "Las herramientas de preparación establecen..."

¡Gracias por cualquier idea! Jeff


Aquí está el loop que muestra el tipo de post personalizado:

<?php
query_posts( array( 'post_type' => 'portfolio', 'toolkit' => 'preparation' ) );
//el loop comienza aquí
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
<?php the_content(); ?>
<?php endwhile; endif; wp_reset_query(); ?>

Y aquí está el código de functions.php

add_action('init', 'portfolio_register');

function portfolio_register() {

$labels = array(
    'name' => _x('Toolkit', 'nombre general del tipo de post'),
    'singular_name' => _x('Herramienta', 'nombre singular del tipo de post'),
    'add_new' => _x('Añadir Nueva Herramienta', 'herramienta'),
    'add_new_item' => __('Añadir Nueva Herramienta'),
    'edit_item' => __('Editar Herramienta'),
    'new_item' => __('Nueva Herramienta'),
    'view_item' => __('Ver Herramienta'),
    'search_items' => __('Buscar en Toolkit'),
    'not_found' =>  __('Nada encontrado'),
    'not_found_in_trash' => __('Nada encontrado en la Papelera'),
    'parent_item_colon' => ''
);

$args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'query_var' => true,
    'menu_icon' => get_stylesheet_directory_uri() . '/article16.png',
    'rewrite' => true,
    'capability_type' => 'post',
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array('title','editor','thumbnail')
  ); 

register_post_type( 'portfolio' , $args );
}

register_taxonomy("toolkit", array("portfolio"), array("hierarchical" => true, "label" => "Categorías de Herramientas", "singular_label" => "Herramienta", "rewrite" => true));
0
Todas las respuestas a la pregunta 2
5

Para obtener el término de taxonomía para este post en particular, lo que necesitas es wp_get_post_terms($post->ID, 'nombredetutaxonomia')

Esto devolverá un array de términos en la taxonomía especificada para el post indicado. La página del codex es: http://codex.wordpress.org/Function_Reference/wp_get_post_terms

Si buscas un término específico en una taxonomía usa get_term($taxonomy_name, $term_id). También puedes obtener todos los términos de una taxonomía usando get_terms()

Aquí tienes un ejemplo de cómo usarlo.

$terms = wp_get_post_terms($post->ID,'toolkit');  
foreach ($terms as $term) {  
    echo $term->description;  
}  
19 nov 2010 19:29:11
Comentarios

En realidad, ahora estoy confundido. ¿Necesitas que la taxonomía de categoría normal esté adjunta a los custom posts, o solo necesitas mostrar descripciones para cada una de tus categorías (donde categoría significa un ítem en la taxonomía normal de categorías de WP)?

anu anu
19 nov 2010 21:29:23

¡Disculpa por la confusión! Necesito las categorías que creé para los custom posts. Así que, es una taxonomía solo para estos posts. ¿Tiene sentido?

Jeff Tancil Jeff Tancil
19 nov 2010 22:33:36

Entendido - editando mi respuesta con lo que creo que necesitas

anu anu
19 nov 2010 23:07:16

Gracias, Anu. Lamento ser un novato en php, pero probé esto y no obtuve nada: '<?php wp_get_post_terms('20', 'toolkit', 'description') ?>' ¿Debería haberlo dejado como '<?php wp_get_post_terms($post->ID, 'toolkit', 'description') ?>'?

Jeff Tancil Jeff Tancil
21 nov 2010 17:44:20

Agregué un fragmento de código rápido

anu anu
21 nov 2010 20:05:58
4

Asegúrate de pasar el ID numérico de la categoría a la función category_description.

El valor de la variable $category no se llenará automáticamente, si eso es lo que esperabas. Necesitas establecerlo para cada categoría que muestres.

Si publicas el código relevante (el bucle que estás utilizando para mostrar esa lista de categorías), sería más fácil solucionar el problema.

19 nov 2010 19:00:48
Comentarios

Gracias, MathSmath, voy a intentar eso. ¡Estaba siendo un poco demasiado literal! El código está arriba, gracias de nuevo.

Jeff Tancil Jeff Tancil
19 nov 2010 19:57:49

MathSmath, añadí lo siguiente y aún no obtengo la descripción de la categoría. ¿Estoy haciendo algo mal, verdad? <?php query_posts( array( 'post_type' => 'portfolio', 'toolkit' => 'preparation' ) ); //el loop comienza aquí if ( have_posts() ) : while ( have_posts() ) : the_post(); ?> <?php the_content(); ?> <?php echo category_description('20'); ?> <?php endwhile; endif; wp_reset_query(); ?>

Jeff Tancil Jeff Tancil
19 nov 2010 22:34:11

Jeff, por favor añade el código del loop dentro de tu pregunta original ya que es mucho más fácil de leer allí.

hakre hakre
20 nov 2010 00:12:03

Creo que category_description() solo funciona para la taxonomía de categoría predeterminada - no para una taxonomía personalizada

anu anu
21 nov 2010 15:37:36