Liczba postów: 1,048
Dołączył: Dec 2013
Reputacja:
336
Forum Gold: 61.00
Sprawdź:
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:
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
Glosy:
Liczba postów: 270
Dołączył: Apr 2017
Reputacja:
108
Forum Gold: 1,359.00
RE: Pogrupowana lista tagów
precell
Moze to Cie jakos naprowadzi w sumie to chyba to
temat sprzed kilku lat ale raczej nic sie nie zmienilo
https://stackoverflow.com/questions/1155...-wordpress
Glosy: precell (+1)
Liczba postów: 1,048
Dołączył: Dec 2013
Reputacja:
336
Forum Gold: 61.00
RE: Pogrupowana lista tagów
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ą.
(Ten post był ostatnio modyfikowany: 31-03-2019, 00:39 przez precell .)
Glosy:
Liczba postów: 1,048
Dołączył: Dec 2013
Reputacja:
336
Forum Gold: 61.00
RE: Pogrupowana lista tagów
Aha temat można zamknąć ;-)
Majka
Ostateczny kod PHP i CSS wrzucę w poniższy temat:
https://zarabiam.com/Temat-Modyfikacja-W...zek-156576
Glosy:
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.
Glosy: