Как вывести информацию о категории для пользовательского типа записи

19 нояб. 2010 г., 15:37:17
Просмотры: 14.3K
Голосов: 2

Я создал страницу, которая использует пользовательские записи: http://www.africanhealthleadership.org/resources/toolkit/

Каждый инструмент (Preparation, Assessment и т.д.) является пользовательской записью. В админке WP каждый инструмент - это категория; у каждой категории есть поле "description". Я хочу вывести эти описания на странице Toolkit. Я пробовал использовать это, но ничего не отображается: <?php echo category_description( $category ); ?>

Сейчас описания жестко прописаны в странице. Например, для preparation начинается так: "Preparation tools establish..."

Спасибо за любые идеи! Джефф


Вот цикл, который выводит пользовательский тип записи:

<?php
query_posts( array( 'post_type' => 'portfolio', 'toolkit' => 'preparation' ) );
// начало цикла
if ( have_posts() ) : while ( have_posts() ) : the_post();
?>
<?php the_content(); ?>
<?php endwhile; endif; wp_reset_query(); ?>

И вот код из functions.php

add_action('init', 'portfolio_register');

function portfolio_register() {

$labels = array(
    'name' => _x('Toolkit', 'post type general name'),
    'singular_name' => _x('Tool', 'post type singular name'),
    'add_new' => _x('Add New Tool', 'tool'),
    'add_new_item' => __('Add New Tool'),
    'edit_item' => __('Edit Tool'),
    'new_item' => __('New Tool'),
    'view_item' => __('View Tool'),
    'search_items' => __('Search Toolkit'),
    'not_found' =>  __('Nothing found'),
    'not_found_in_trash' => __('Nothing found in Trash'),
    '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" => "Tool Categories", "singular_label" => "Tool", "rewrite" => true));
0
Все ответы на вопрос 2
5

Чтобы получить термины таксономии для конкретной записи, вам понадобится функция wp_get_post_terms($post->ID, 'ваша_таксономия')

Эта функция вернет массив терминов указанной таксономии для указанной записи. Страница в кодексе: http://codex.wordpress.org/Function_Reference/wp_get_post_terms

Если вам нужен конкретный термин в таксономии, используйте get_term($название_таксономии, $id_термина). Также вы можете получить все термины таксономии с помощью get_terms()

Вот пример использования:

$terms = wp_get_post_terms($post->ID,'toolkit');  
foreach ($terms as $term) {  
    echo $term->description;  
}  
19 нояб. 2010 г. 19:29:11
Комментарии

Честно говоря, я сейчас запутался. Вам нужно, чтобы обычная таксономия категорий была привязана к пользовательским записям, или вам просто нужно выводить описания для каждой из ваших категорий (где под категорией подразумевается элемент стандартной таксономии категорий WP)?

anu anu
19 нояб. 2010 г. 21:29:23

Извините за путаницу! Мне нужны категории, которые я создал для пользовательских записей. То есть это таксономия только для этих записей. Теперь понятнее?

Jeff Tancil Jeff Tancil
19 нояб. 2010 г. 22:33:36

Понял - редактирую свой ответ, добавляя то, что, как мне кажется, вам нужно

anu anu
19 нояб. 2010 г. 23:07:16

Спасибо, Ану. Извини за глупый вопрос по php, но я попробовал это и ничего не получил: '<?php wp_get_post_terms('20', 'toolkit', 'description') ?>' Может, нужно было оставить как '<?php wp_get_post_terms($post->ID, 'toolkit', 'description') ?>' ?

Jeff Tancil Jeff Tancil
21 нояб. 2010 г. 17:44:20

Добавил быстрый фрагмент кода

anu anu
21 нояб. 2010 г. 20:05:58
4

Убедитесь, что вы передаете числовой идентификатор категории в функцию category_description.

Значение переменной $category не заполнится автоматически, если вы ожидали этого. Вам нужно установить его для каждой выводимой категории.

Если вы опубликуете соответствующий код (цикл, который вы используете для вывода этого списка категорий), будет проще найти и исправить проблему.

19 нояб. 2010 г. 19:00:48
Комментарии

Спасибо, MathSmath, я попробую это сделать. Я был слишком буквален! Код выше, еще раз спасибо.

Jeff Tancil Jeff Tancil
19 нояб. 2010 г. 19:57:49

MathSmath, я добавил следующее, но описание категории все равно не выводится. Я делаю что-то глупое, верно? <?php query_posts(array('post_type' => 'portfolio', 'toolkit' => 'preparation')); //начало цикла 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 нояб. 2010 г. 22:34:11

Jeff, пожалуйста, добавьте код цикла в ваш исходный вопрос, так его будет гораздо удобнее читать.

hakre hakre
20 нояб. 2010 г. 00:12:03

Я думаю, что category_description() работает только для стандартной таксономии категорий, а не для пользовательской таксономии

anu anu
21 нояб. 2010 г. 15:37:36