WordPress – Popularne posty + plugin do obrazków

Sporo czasu kombinowałem jak wydobyć z wordpressa posty z danej kategorii sortowane według ilości komentarzy. Żadna z podstawowych funkcji wordpressa nie dawała takich możliwości a przynajmniej cała noc spędzona nad dokumentacją nie dała mi podstaw by myśleć inaczej. Swoją drogą codex WP doprowadza mnie do szału gdy tylko próbuję coś znaleźć, sam fakt że w [...]

Sporo czasu kombinowałem jak wydobyć z wordpressa posty z danej kategorii sortowane według ilości komentarzy. Żadna z podstawowych funkcji wordpressa nie dawała takich możliwości a przynajmniej cała noc spędzona nad dokumentacją nie dała mi podstaw by myśleć inaczej. Swoją drogą codex WP doprowadza mnie do szału gdy tylko próbuję coś znaleźć, sam fakt że w oficjalnej dokumentacji brakuje opisu mnóstwa funkcji jest przytłaczający…

<?php
// Id aktualnej kategorii - mozna zmienić na $kategoria = ID_KATEGORII jesli chcemu ustawić to na sztywno
$kategoria = get_category(get_query_var('cat'),false);
// Pobieramy Id wszytskich podkategorii
$podkategorie = get_categories('child_of='.$kategoria->cat_ID);

// formatujemy wszytskie id w ciąg który przyjmnie baza
// Jesli nie chcemy wyciągać postów z podkategorii wywalamy pętle.
$wszystkie_kategorie = "'".$kategoria-> cat_ID."'";
foreach($podkategorie as $podkat)
	{
		$wszystkie_kategorie .= ",'".$podkat->cat_ID."'";
	}

// Zapytanie do bazy :)
// w zależności czego potrzebujemy wystarczy dodac odpowiednie tabele
$posty = $wpdb->get_results("SELECT SQL_CALC_FOUND_ROWS wp_posts.id, wp_posts.post_title, wp_posts.comment_count, wp_posts.post_date
							FROM wp_posts INNER JOIN wp_term_relationships ON (wp_posts.ID = wp_term_relationships.object_id)
							INNER JOIN wp_term_taxonomy ON (wp_term_relationships.term_taxonomy_id = wp_term_taxonomy.term_taxonomy_id)
							WHERE 1=1  AND wp_term_taxonomy.taxonomy = 'category'
							AND wp_term_taxonomy.term_id IN (".$wszystkie_kategorie.")
							AND wp_posts.post_type = 'post'
							AND (wp_posts.post_status = 'publish' OR wp_posts.post_status = 'private')
							AND wp_posts.comment_count > 0
							GROUP BY wp_posts.ID ORDER BY wp_posts.comment_count DESC
							LIMIT 5
							");
// pętla robiąca nam z wyników liste w htmlu
foreach ($posty as $post)
	{
		setup_postdata($post);
		$id = $post->id;
		$tytul = $post->post_title;
		$data = mysql2date('jS M', $post->post_date, $translate = true);
		$ilosc = $post->comment_count;
		if ($ilosc != 0)
			{
				$popularne .= '<li>';
				$popularne .= '<a href="' . get_permalink($id) . '" title="' . $tytul . '">' . $tytul . '<span class="date">'.$data.'</span></a> ';
				$popularne .= '</li>';
			}
	}
// wysłanie wyników do przeglądarki
echo $popularne;
?>

Ale wracając do tematu. Udało mi się wykrzesać kawałek kodu który pozwala na wyciąganie postów z konkretnej kategorii i wszystkich jej podkategorii sortując według ilości komentarzy. Wygląda to następująco:

Kod został napisany do działania w szablonie category.php ale jeśli ustawimy w pierwszej zmiennej $kategoria ID na sztywno możemy go wkleić gdziekolwiek. Jeszcze jako bonus dodam link do ciekawego pluginu który pozwala na zdefiniowanie wiekszej ilości dostepnych rozmiarów obrazków wysyłanych na serwer, prócz standardowych 4 możemy ich robić ile nam się podoba, bardzie fajnie działa z włączoną obsługą miniaturek postów. Włączamy je przez dodanie krótkiego kodu do pliku funkcji szablonu.

<?php add_theme_support( 'post-thumbnails' ) ?>

Plugin jest bardzo prosty w użyciu, a oto i link : Additional image sizes

Podobne wpisy

mobilka

Blogowanie z iPada

4creatti

Nowy projekt – 4creatti

microsoft-livewriter

Publikowanie z poziomu Worda 2007

Komentarze | Pingi Brak odpowiedzi :(