Как получить категорию записи и связать её с архивом (категории)

8 янв. 2012 г., 14:29:34
Просмотры: 26.8K
Голосов: 3

Я пытаюсь создать кнопку в боковой панели, которая связана с отображаемой записью. По сути, кнопка должна показывать "другие новости в КАТЕГОРИИ1". У меня есть такой код:

<div id="pagine">
<?php 
$category = get_the_category(); 
if($category[0]){
echo '<a href="'.get_category_link($category[0]->term_id ).'"><div id="pagine"><ul><li>Новости в '.$category[0]->cat_name.'</li></ul></div></a>';
}
?>
</div>

который, к сожалению, отображает неправильную категорию. Не могли бы вы подсказать, как это сделать правильно. Это не должно быть сложным, я только начал работать с WordPress.

0
Все ответы на вопрос 2
0

Один из этих трёх вариантов должен подойти вам...

1. Функция: the_category();

Новости в <?php the_category(', '); ?>

Отображается как:

Новости в WordPress, Компьютеры, Блоггинг

А если записи назначена только одна категория, это будет выглядеть так:

Новости в WordPress

2. Функция: get_the_category_list();

<div id="pagine"><?php echo get_the_category_list(); ?></div>

Отображается как:

<div id="pagine">
    <ul class="post-categories">
        <li>
            <a href="http://example.com/category/wordpress/" title="Просмотреть все записи в Business" rel="category tag">WordPress</a>
        </li>
        <li>
            <a href="http://example.com/category/computers/" title="Просмотреть все записи в Business" rel="category tag">Компьютеры</a>
        </li>
    </ul>
</div>

А если записи назначена только одна категория, вывод будет таким:

<div id="pagine">
    <ul class="post-categories">
        <li>
            <a href="http://example.com/category/wordpress/" title="Просмотреть все записи в Business" rel="category tag">WordPress</a>
        </li>
    </ul>
</div>

3. Функция: single_cat_title();

Если вы хотите показать только одну категорию (будет показана категория с наименьшим ID), независимо от того, сколько категорий назначено записи, используйте что-то вроде этого:

<div id="pagine">
    <ul>
        <li>
            <?php
                $category = get_the_category();
                echo '<a href="'.get_category_link($category[0]->cat_ID).'">Новости в ' . $category[0]->cat_name . '</a>';
            ?>
        </li>
    </ul>
</div>

Приведённый выше код всегда показывает одну категорию, например:

Новости в WordPress

Итак, учитывая приведённые коды (и то, что делает каждый из них), выберите подходящий для ваших нужд.

16 июл. 2012 г. 12:11:20
2

Функция get_the_category возвращает массив объектов stdClass, содержащих все категории, связанные с текущим post_id.

Обращение к $category[0] позволит получить первую категорию в массиве. Для просмотра структуры данных можно использовать:

<?php print_r( $category ); ?>
8 янв. 2012 г. 16:12:42
Комментарии

Спасибо, Chris_O. Причина, по которой отображалась неправильная категория, в том, что по какой-то причине большинство записей имеют неверную категорию! print_r показал, что большинство из них находятся в неправильной категории. Но самое тревожное, что в WP CMS запись находится в правильной категории! Например. В CMS postA находится в categoryA, тогда как с print_r он показывает categoryB! Как вы думаете, почему так происходит? Спасибо за ваше время

Filippo Bonino Filippo Bonino
8 янв. 2012 г. 19:46:55

ваш код будет работать только если запись находится только в одной категории. также учтите, что ваш код генерирует невалидный HTML-код, размещая div и ul внутри тега ссылки.

Michael Michael
9 янв. 2012 г. 00:25:05