Cum să afișezi o listă de categorii

8 feb. 2014, 09:25:19
Vizualizări: 60.6K
Voturi: 3

Încerc să configurez o listă de categorii cu linkuri clicabile către fiecare categorie. Am consultat:

și nu sunt sigur unde să pun codul sau cum să-l accesez în pagină.

Înțeleg destul de bine PHP-ul - este destul de simplu, doar că sunt relativ nou în WordPress și am nevoie de ajutor pentru implementare.

1
Comentarii

Înfășoară codul pe care l-ai obținut în linkul de mai sus într-o funcție și adaugă-l în functions.php, apoi folosește acea funcție oriunde dorești folosind hook-uri, shortcode sau în fișierul de template.

gmatta gmatta
4 ian. 2019 10:20:40
Toate răspunsurile la întrebare 5
0

Voi arăta cum să afișezi o listă de categorii în WordPress și cum să marchezi categoria activă, vezi codul de mai jos:

<?php
// Obține obiectul curent interogat
$term    = get_queried_object();
$term_id = ( isset( $term->term_id ) ) ? (int) $term->term_id : 0;

$categories = get_categories( array(
    'taxonomy'   => 'category', // Taxonomia pentru care se preiau termenii. Vrem 'category'. Reține că acest parametru este implicit 'category', deci poți să-l omiți
    'orderby'    => 'name',
    'parent'     => 0,
    'hide_empty' => 0, // schimbă în 1 pentru a ascunde categoriile care nu au niciun articol
) );
?>

<ul>
    <?php
    foreach ( $categories as $category ) 
    {
        $cat_ID        = (int) $category->term_id;
        $category_name = $category->name;

        // Când vizualizezi o anumită categorie, adaugă clasa [active]
        $cat_class = ( $cat_ID == $term_id ) ? 'active' : 'not-active';

        // Nu-mi place să afișez categoria [uncategorized]
        if ( strtolower( $category_name ) != 'uncategorized' )
        {
            printf( '%3$s',
                esc_attr( $cat_class ),
                esc_url( get_category_link( $category->term_id ) ),
                esc_html( $category->name )
            );
        }
    }
    ?>
</ul>

Note despre codul de mai sus:

get_queried_object() preia obiectul curent interogat. De exemplu:

  • dacă ești pe un articol singular, va returna obiectul articolului
  • dacă ești pe o pagină, va returna obiectul paginii
  • dacă ești pe o pagină de arhivă, va returna obiectul tipului de postare
  • dacă ești pe o arhivă de categorii, va returna obiectul categoriei
  • dacă ești pe o arhivă de autor, va returna obiectul autorului
  • etc.

Dar există câteva implicații atunci când folosești get_queried_object(), nu ar trebui să te aștepți să returneze un obiect de tip postare chiar și atunci când is_post_type_archive() este adevărat. Verifică pentru mai multe informații.

De asemenea, reține că get_queried_object() este un wrapper pentru $wp_query->get_queried_object(), deci returnează un tip de date WP object.

get_categories()

get_categories() preia o listă de obiecte de categorii. În prezent acceptă doar un parametru - $args. Parametrul $args specifică o listă de argumente care ar trebui folosite pentru a prelua categoriile. Vezi get_terms() pentru opțiuni suplimentare.

Totuși, pentru a obține categoriile pentru o anumită postare, iată o funcție simplă pe care am scris-o: Cum să obții lista de categorii pentru o postare

4 ian. 2019 09:25:14
0

Conform firului WPSE menționat și răspunsului acceptat, codul este (copiat și lipit):

$categories =  get_categories('child_of=31');  
foreach  ($categories as $category) {
    // Afișează informațiile subcategoriei folosind valorile $category, cum ar fi $category->cat_name
    echo '<h2>'.$category->name.'</h2>';
    echo '<ul>';

    foreach (get_posts('cat='.$category->term_id) as $post) {
        setup_postdata( $post );
        echo '<li><a href="'.get_permalink($post->ID).'">'.get_the_title().'</a></li>';   
    }  
    echo '</ul>';
}

Pentru noi (dezvoltatorii WordPress) Codex este cheia pentru majoritatea elementelor de bază. Deci, conform WordPress Codex:

  • get_categories() interoghează toate categoriile unui site și returnează un array.
  • În mod similar, get_posts() interoghează toate articolele unui site și returnează un array.

Și ambele sunt prescurtări ale WP_Query(). Puteți găsi toți parametrii posibili din paginile Codex. Deoarece sunteți un entuziast PHP, știți cum funcționează codul: $categories preia toate categoriile, iar pentru fiecare categorie get_posts() preia articolele sale.

Deci, este foarte similar cu o interogare mySQL și o buclă foreach în PHP simplu. Puteți introduce acest cod în oricare dintre paginile de șablon ale temei active a site-ului dvs. WordPress. Ierarhia șabloanelor vă poate oferi o perspectivă detaliată.

Conform titlului întrebării dumneavoastră:

How to display a list of categories (Cum se afișează o listă de categorii)

Răspunsul poate fi:

$categories =  get_categories();
echo '<ul>';
foreach  ($categories as $category) {
  echo '<li>'. $category->cat_name .'</li>';
}
echo '</ul>';

Nu sunt sigur unde să pun codul sau cum să-l accesez pe pagină.

Am menționat deja, încercați să introduceți codul în index.php, front-page.php, ... oriunde. Conceptul cheie este: este doar o interogare SQL și o buclă foreach utilă în PHP.

8 feb. 2014 11:01:16
0

Această metodă vă permite să excludeți orice categorie prin simpla adăugare a ID-ului categoriei în cod.

Iată o metodă mai bună pentru a adăuga o listă de categorii condiționat din fișierul de funcții al temei child, în orice locație de hook WordPress sau specifică temei:

add_filter( 'the_content', 'wpsites_list_cats' );
function wpsites_list_cats($content) {
if( is_singular('post') && is_main_query() ) {
$args = array(
'orderby' => 'name',
'exclude' => '',
'include' => '',
'parent' => 0
);
$categories = get_categories( $args );
echo'<nav id="primary-navigation" class="primary-navigation" role="navigation">';
foreach ( $categories as $category ) {
echo '<li><a href="' . get_category_link( $category->term_id ) . '">' .  $category->name . '</a></li>';
}
echo'</nav>';
return $content;
    }
}

Iată rezultatul

Rezultatul afișării listei de categorii

Și iată rezultatul dacă doriți să folosiți stilizarea existentă din meniurile de navigare ale temei Twenty Fourteen, pe care codul de mai sus o include.

Rezultat cu stilizare Twenty Fourteen

Codul vă permite, de asemenea, să includeți categorii specifice sau să excludeți oricare folosind ID-urile categoriilor.

Puteți de asemenea să creați o zonă widget personalizată și să folosiți widget-ul nativ de categorii din WordPress.

Pur și simplu schimbați hook-ul the_content pentru a modifica locația listei de categorii.

Modificat după această sursă

8 feb. 2014 17:32:56
0

Sau poți folosi plugin-ul List Categories cu propriul său shortcode configurabil, care funcționează ca o scurtătură către funcția wp_list_categories( array|string $args = '' ).

Poți configura argumentele acesteia conform documentației menționate.

18 iul. 2023 18:29:28
0

Cea mai ușoară metodă de a realiza acest lucru este prin utilizarea widget-ului implicit de categorii din WordPress.

15 apr. 2024 21:02:14