Come ottenere la categoria di un post e collegarla all'archivio (della categoria)

8 gen 2012, 14:29:34
Visualizzazioni: 26.8K
Voti: 3

Sto cercando di progettare un pulsante nella sidebar collegato al post visualizzato. Il pulsante è fondamentalmente un "altre notizie in CAT1". Ho questo pezzo di codice:

<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>Notizie su '.$category[0]->cat_name.'</li></ul></div></a>';
}
?>
</div>

che purtroppo mostra la categoria sbagliata. Qualcuno può dirmi come fare? Non dovrebbe essere così difficile, ho appena iniziato con WordPress.

0
Tutte le risposte alla domanda 2
0

Una di queste tre funzioni dovrebbe fare al caso tuo...

1. Funzione: the_category();

News su <?php the_category(', '); ?>

Visualizzazione:

News su WordPress, Computer, Blogging

Se al post è assegnata una sola categoria, apparirà così:

News su WordPress

2. Funzione: get_the_category_list();

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

Visualizzazione:

<div id="pagine">
    <ul class="post-categories">
        <li>
            <a href="http://example.com/category/wordpress/" title="View all posts in Business" rel="category tag">WordPress</a>
        </li>
        <li>
            <a href="http://example.com/category/computers/" title="View all posts in Business" rel="category tag">Computer</a>
        </li>
    </ul>
</div>

Se al post è assegnata una sola categoria, l'output sarà così:

<div id="pagine">
    <ul class="post-categories">
        <li>
            <a href="http://example.com/category/wordpress/" title="View all posts in Business" rel="category tag">WordPress</a>
        </li>
    </ul>
</div>

3. Funzione: single_cat_title();

Se vuoi mostrare solo una categoria (verrà mostrata quella con l'ID più basso) indipendentemente da quante categorie sono assegnate al post, usa qualcosa come questo:

<div id="pagine">
    <ul>
        <li>
            <?php
                $category = get_the_category();
                echo '<a href="'.get_category_link($category[0]->cat_ID).'">News su ' . $category[0]->cat_name . '</a>';
            ?>
        </li>
    </ul>
</div>

Il codice sopra mostra sempre una sola categoria, così:

News su WordPress

Quindi, dati i codici (e ciò che ognuno fa), adattali alle tue esigenze.

16 lug 2012 12:11:20
2

get_the_category restituisce un array di oggetti stdClass di tutte le categorie associate al post_id corrente.

$category[0] ti darà la prima categoria nell'array. Per vedere la mappatura fai:

<?php print_r( $category ); ?>
8 gen 2012 16:12:42
Commenti

Grazie, Chris_O. Il motivo per cui mostrava la categoria sbagliata è che per qualche motivo, la maggior parte dei post ha la categoria errata! Il print_r mostrava che la maggior parte di essi sono nella categoria sbagliata. Ma la cosa preoccupante è che nel CMS di WordPress il post è nella categoria corretta! ESEMPIO. Nel CMS il postA è nella categoriaA, mentre con il print_r mostra categoriaB! Perché pensi che succeda? Grazie per il tuo tempo

Filippo Bonino Filippo Bonino
8 gen 2012 19:46:55

il tuo codice funzionerà solo se un post è in una singola categoria. inoltre, tieni presente che il tuo codice sta generando codice html non valido, avendo un div e ul all'interno di un tag link.

Michael Michael
9 gen 2012 00:25:05