Envato Elements - pobieraj co chcesz, ile chcesz

W komentarzach pod artykułem o RODO (Praktyczne aspekty Rozporządzenia o Ochronie Danych Osobowych (RODO/GDPR) w działalności internetowej) dyskusja trochę zboczyła na boczne tory, i dotarła do wyświetlania chmurki tagów, ale tylko dla artykułów (postów) z wybranej kategorii. Zagadnienie (wyzwanie ;-)) w sumie ciekawe, więc postanowiłem mu się przyjrzeć…

WordPress i chmura tagów dla postów z wybranej kategorii

WordPress w standardzie posiada funkcję, które pozwala nam wyświetlić właściwie w dowolnym miejscu chmurkę tagów, które są wykorzystywane przy artykułach:

wp_tag_cloud(); 

Mamy tu nawet jakieś wbudowane możliwości personalizacji wyników, ale brak (przynajmniej) jednej opcji, która w niektórych przypadkach by się przydała:

Bardziej mi zależy, na tagu tylko na digg, by łatwiej było mi szukać, co mam w digg.

(…)

Z tego co ja czytałem (i zrozumiałem) dokumentację, to mogę wykluczyć co najwyżej jakieś tagi, ale dla mnie tagi są uniwersalne dla digg i nie digg.

Uznałem, że wprawdzie w standardzie opcji, by przefiltrować chmurkę do tagów tylko z wybranej kategorii nie mamy, ale od czego mamy – na potrzeby przećwiczenia koncepcji – query_post(), dzięki czemu możemy przefiltrować posty należące np. do wybranej kategorii:

query_posts( 'category_name=slug-kategorii' );

Zdecydowałem się skorzystać ze sluga kategorii, ale można równie dobrze skorzystać z ID kategorii:

query_posts( 'cat=1' );

Ogólnie, dzięki skorzystaniu z tej metody możemy dość dowolnie przefiltrować artykuły (posty), z którymi w dalszej kolejności będziemy pracować…

W dalszej kolejności to już operacje (w pętli) na przefiltrowanych artykułach, z których na potrzeby naszej chmurki tagów wyciągamy skojarzone z artykułami tagi, które następnie – po małej obróbce – podstawiamy jako argumenty do standardowej funkcji odpowiedzialnej za wyświetlenie chmury tagów:

<?php

query_posts( 'category_name=slug-kategorii' );
if ( have_posts() ) {
	while ( have_posts() ) {

		the_post();

		$PostTags = get_the_tags();
			if ( $PostTags) {
				foreach( $PostTags as $Tag ) {
					$CategoryTagsArray[] = $Tag -> term_id;
				}
			}

	} 
}
wp_reset_query();

$CloudTagArgs = array( 'include' => implode( ',', array_unique( $CategoryTagsArray ) ) );

wp_tag_cloud( $CloudTagArgs ); 

?>

W warunkach produkcyjnych zamiast „query_posts” lepiej chyba będzie skorzystać z „WP_Query”, co wymaga nieznacznej modyfikacji kodu:

<?php

$query = new WP_Query( array( 'category_name' => 'artykul-sponsorowany' ) );

if ( $query->have_posts() ) {
	while ( $query->have_posts() ) {

		$query->the_post();

		$PostTags = get_the_tags();
			if ( $PostTags) {
				foreach( $PostTags as $Tag ) {
					$CategoryTagsArray[] = $Tag -> term_id;
				}
			}

	} 
}

$CloudTagArgs = array( 'include' => implode( ',', array_unique( $CategoryTagsArray ) ) );

wp_tag_cloud( $CloudTagArgs ); 

?>

Powyższy kod PHP (jeden lub drugi, ale lepiej chyba drugi) wystarczy wstawić w miejscu, gdzie chcemy wyświetlić tak zmodyfikowaną chmurkę tagów (można też np. stworzyć krótki kod, który powinien znacznie uprościć wykorzystanie).

(!) Zgłoś błąd na stronie
Potrzebujesz profesjonalnej pomocy? Skontaktuj się z nami!
Spodobał Ci się artykuł? Zapisz się do naszego Newslettera - ZERO SPAMu, same konkrety, oraz dostęp do dodatkowych materiałów przeznaczonych dla subskrybentów!
Na podany adres e-mail otrzymasz od nas wiadomość e-mail, w której znajdziesz link do potwierdzenia subskrypcji naszego Newslettera. Dzięki temu mamy pewność, że nikt nie dodał Twojego adresu przez przypadek. Jeśli wiadomość nie przyjdzie w ciągu najbliższej godziny (zazwyczaj jest to maksymalnie kilka minut) sprawdź folder SPAM.
Janusz i Janusz skorzystali z promocji dla czytelników WebInsider.pl i zapłacili 80% mniej za księgowość internetową wFirma
WebInsider poleca księgowość wFirma
WebInsider korzysta z VPSa w HitMe.pl
WebInsider poleca VPSy DigitalOcean
WebInsider poleca serwis Vindicat
Napisz komentarz
wipl_napisz-komentarz_01Jeśli informacje zawarte na tej stronie okazały się pomocne, możesz nam podziękować zostawiając poniżej swój komentarz.

W tej formie możesz również zadać dodatkowe pytania dotyczące wpisu, na które – w miarę możliwości – spróbujemy Ci odpowiedzieć.
Linki partnerskie
Niektóre z linków na tej stronie to tzw. „linki partnerskie”, co oznacza, że jeśli klikniesz na link i dokonasz wymaganej akcji (np. zakup/rejestracja) możemy otrzymać za to prowizję. Pamiętaj, że polecamy tylko te produkty i usługi, z których sami korzystamy, i uważamy, że są tego na prawdę warte… :-)
Znaki towarowe i nazwy marek
W niektórych wpisach (oraz innych miejscach na stronie) mogą być przedstawione/użyte znaki towarowe i/lub nazwy marek, które stanowią własność intelektualną tych podmiotów, a zostały użyte wyłącznie w celach informacyjnych.
Roztańczona Karolina dzięki motywowi Divi od Elegant Themes właśnie skończyła pierwszą stronę