Cum să obții categoria unei postări și să o conectezi cu arhiva (categoriei)

8 ian. 2012, 14:29:34
Vizualizări: 26.8K
Voturi: 3

Încerc să creez un buton în sidebar care să fie legat de postarea afișată. Butonul este practic un "alte știri din CAT1". Am acest fragment de cod:

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

care din păcate afișează categoria greșită. Poate cineva să-mi spună cum să procedez corect? Nu ar trebui să fie atât de dificil, abia am început să lucrez cu WordPress.

0
Toate răspunsurile la întrebare 2
0

Unul dintre aceste trei ar trebui să facă treaba pentru tine...

1. Funcția: the_category();

Știri despre <?php the_category(', '); ?>

Se afișează ca:

Știri despre WordPress, Calculatoare, Blogging

Și dacă doar o singură categorie este atribuită unui articol, va apărea astfel:

Știri despre WordPress

2. Funcția: get_the_category_list();

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

Se afișează ca:

<div id="pagine">
    <ul class="post-categories">
        <li>
            <a href="http://example.com/category/wordpress/" title="Vezi toate articolele din Business" rel="category tag">WordPress</a>
        </li>
        <li>
            <a href="http://example.com/category/computers/" title="Vezi toate articolele din Business" rel="category tag">Calculatoare</a>
        </li>
    </ul>
</div>

Și dacă doar o singură categorie este atribuită unui articol, rezultatul va arăta astfel:

<div id="pagine">
    <ul class="post-categories">
        <li>
            <a href="http://example.com/category/wordpress/" title="Vezi toate articolele din Business" rel="category tag">WordPress</a>
        </li>
    </ul>
</div>

3. Funcția: single_cat_title();

Dacă dorești să afișezi doar o singură categorie (categoria cu cel mai mic ID va fi afișată), indiferent de câte categorii sunt atribuite unui articol, folosește ceva de genul:

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

Codul de mai sus afișează întotdeauna o singură categorie, astfel:

Știri despre WordPress

Așadar, având în vedere codurile (și ce face fiecare), alege-le în funcție de nevoile tale.

16 iul. 2012 12:11:20
2

get_the_category returnează un array de obiecte stdClass cu toate categoriile asociate postării curente (post_id).

$category[0] vă va oferi prima categorie din array. Pentru a vedea structura, puteți folosi:

<?php print_r( $category ); ?>
8 ian. 2012 16:12:42
Comentarii

Mulțumesc, Chris_O. Motivul pentru care afișa categoria greșită este că, din anumite motive, majoritatea postărilor au categoria greșită! Funcția print_r a arătat că majoritatea sunt în categoria greșită. Dar lucrul deranjant este că în WP CMS postarea este în categoria corectă! De exemplu. În CMS, postA este în categoriaA, în timp ce cu print_r arată categoriaB! De ce crezi că se întâmplă asta? Mulțumesc pentru timpul acordat.

Filippo Bonino Filippo Bonino
8 ian. 2012 19:46:55

codul tău va funcționa doar dacă o postare este într-o singură categorie. de asemenea, fii atent că codul tău generează cod html invalid, având un div și ul în interiorul unui tag de link.

Michael Michael
9 ian. 2012 00:25:05