Praca w domu - Dodatkowa Praca - Zarabianie przez Internet
Pogrupowana lista tagów - Wersja do druku

+- Praca w domu - Dodatkowa Praca - Zarabianie przez Internet (https://zarabiam.com)
+-- Dział: Afiliacja, marketing i strony internetowe (https://zarabiam.com/Forum-Programy-Partnerskie-oraz-Programy-Afiliacyjne-354)
+--- Dział: WordPress (https://zarabiam.com/Forum-Wordpress-360)
+--- Wątek: Pogrupowana lista tagów (/Temat-Pogrupowana-lista-tagow-161399)



Pogrupowana lista tagów - precell - 03-03-2019

Witam

Wymyśliłem sobie, że na jednej z moich stron wyświetlę sobie na podstronie listę wszystkich tagów na blogu.

W tym celu stworzyłem sobie niestandardowy szablon dla stron i wrzuciłem odpowiedni kod, który wcześniej znalazłem.

Kod PHP:
<?
    $tags = get_tags();
    if ($tags) {
        ?><ul class="tags"><?
        foreach ($tags as $tag) {
            echo '<li><a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . '>' . $tag->name.'</a></li>';
        }
        ?></ul><?
    }
?>

Sęk w tym, że ten kod wyświetla prostą listę tagów. A chciałbym żeby to wyglądało mniej więcej tak:

[Obrazek: screenshot-1.gif]

Czyli literka, a pod nim lista tagów na daną literkę i w nawiasie liczba wpisów z danym tagiem.

Znajdzie się dobra dusza która przerobi mi powyższy kod? :-)
Niestety jestem php odporny Tongue


RE: Pogrupowana lista tagów - eseles - 30-03-2019

@[precell]
Moze to Cie jakos naprowadzi w sumie to chyba to Big Grin temat sprzed kilku lat ale raczej nic sie nie zmienilo Tongue
https://stackoverflow.com/questions/11550469/alphabetical-list-index-for-custom-tags-even-if-empty-wordpress


RE: Pogrupowana lista tagów - precell - 31-03-2019

Widziałem to rozwiązanie, ale go nie wypróbowałem. Dlatego, że to jest kod dla niestandardowych tagów, na szczęście modyfikacja dla standardowych tagów była dość prosta ;-)
Wystarczyło zmienić drugą linijkę, teraz wygląda to tak:
Kod PHP:
<?php $list = ''; 
$tags = get_tags();
echo 
'<ul id="portfolio-filter">'; 
echo
'<li><a href="#all" title="">All</a></li>';
$groups = array();
if( 
$tags && is_array( $tags ) ) {
foreach( 
$tags as $tag ) {
$first_letter = strtoupper( $tag->name[0] );
$groups[ $first_letter ][] = $tag;}
if( !empty( 
$groups ) ) {
foreach( 
$groups as $letter => $tags ) {
$list .= "\n\t" . '<h2>' . apply_filters( 'the_title', $letter ) .'</h2>';
$list .= "\n\t" . '<ul>';
foreach( 
$tags as $tag ) {
$lower = strtolower($tag->name);
$name = str_replace(' ', ' ', $tag->name);
$naam = str_replace(' ', '-', $lower);
$list .= "\n\t\t" . '<li><a href="#'.$naam.'">'.$name.'</a></li>';
}}}}else 
$list .= "\n\t" . '<p>Sorry, but no tags were found</p>';print $list;
echo 
"</ul>";
?>
Teraz jeszcze muszę pozmieniać html w kodzie i ostylować w CSS.

Dzięki za motywację :-)

Temat można zamknąć :-)

Edyta:

Jednak kod wymagał grubszej edycji. Teraz po zmianach wygląda tak:

Kod PHP:
<?php $list = ''; 
$tags = get_tags();
echo 
'<ul id="tags">'; 
$groups = array();
if( 
$tags && is_array( $tags ) ) {
foreach( 
$tags as $tag ) {
$first_letter = strtoupper( $tag->name[0] );
$groups[ $first_letter ][] = $tag;}
if( !empty( 
$groups ) ) {
foreach( 
$groups as $letter => $tags ) {
$list .= "\n\t" . '<h2>' . apply_filters( 'the_title', $letter ) .'</h2>';
$list .= "\n\t" . '<ul>';
foreach( 
$tags as $tag ) {
$list .= "\n\t\t" . '<li><a href="' . get_tag_link( $tag->term_id ) . '" title="' . sprintf( __( "View all posts in %s" ), $tag->name ) . '" ' . '>' . $tag->name.'</a></li>';
}}}}else 
$list .= "\n\t" . '<p>Sorry, but no tags were found</p>';print $list;
echo 
"</ul>";
?>

Musiałem wywalić z generowanych linków "#" i zmienić slug z liczby mnogiej na pojedynczą.


RE: Pogrupowana lista tagów - precell - 22-04-2019

Aha temat można zamknąć ;-)
@[Majka]

Ostateczny kod PHP i CSS wrzucę w poniższy temat:
https://zarabiam.com/Temat-Modyfikacja-WordPress-bez-uzycia-wtyczek-156576


Pogrupowana lista tagów - Majka - 22-04-2019

Wątek zostaje zamknięty, ponieważ moderator uznał że temat został wyczerpany bądź rozwiązany. Jeśli posiadasz nowe pytania prosimy o założenie kolejnego tematu.