Redakcja WebInsider.pl zaprasza na WordCamp 2018 Poznań. Poznajmy się w Poznaniu!

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).


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.
Młody Szymon pomógł tacie zapisać się do Newslettera WebInsider.pl i... teraz idzie popływać
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 skorzystała z promocji dla czytelników WebInsider.pl i zapłaciła 80% mniej za księgowość internetową wFirma