WordPress: Výpis príspevkov podľa prvého písmena

Tento týžďen som riešil to ako vo WordPresse vypisovať príspevky na základe prvého písmena v názve. Ak máte záujem o kompletné riešenie, tak čítajte ďalej.

Nebudem to tu moc opisovať, ale rovno sem hodím jednotlivé kusy kódu.

Pridáme query premennú pismeno a vďaka tomu ju po pridani do URL uvidime aj pri volani funkcie get_query_var():

function query_vars_filter($query_vars) {
	$query_vars[] = 'pismeno';
	return $query_vars;
}
add_filter('query_vars', 'query_vars_filter');

Pridáme filter na modifikovanie WHERE klauzuly pri vytvorenom SQL dotaze. Ak v dotaze (nie sql, ale url), alebo priamo pri volaní query_posts() nájdeme parameter pismeno, tak modifikujem SQL dotaz:

function where_filter($where, $wp_query) {
	if(!$wp_query->get('pismeno'))
		return $where;
	
	global $wpdb;
	if($pismeno = $wp_query->get('pismeno')) {
		$where .= " AND {$wpdb->posts}.post_title LIKE '{$pismeno}%'";
	} 
	return $where;
}
add_filter('posts_where', 'where_filter', 10, 2);

Pridáme ďalší filter na modifikovanie zoradenia záznamov. Ak vypisujeme záznamy podľa začiatočného písmena, tak ich zoradíme podľa abecedy:

function orderby_filter($where, $wp_query) {
	if(!$wp_query->get('pismeno'))
		return $where;
		
	global $wpdb;
	
	return "{$wpdb->posts}.post_title ASC";
}
add_filter('posts_orderby', 'orderby_filter', 10, 2);

Vďaka uvedenému kódu sa pri zadaní parametra pismeno budú zobrazovať len príspevky, ktorých názov sa začína zadaným písmenom. Ku filtrom sa ešte dajú pridať rozne podmienky, kedy sa filter má aplikovať, alebo nie, avšak to záleží na konkrétnom použití…


Posted

in

by

Comments

3 odpovede na na “WordPress: Výpis príspevkov podľa prvého písmena”

  1. JohnnyPea Avatar

    Praktický návod a pekné využitie filtrov(som rád, keď kóderi používajú „hooks“ vo WP a nepíšu si napríklad celé vlastné sql queries) , díky.

  2. head Avatar

    To zalezi od situacie… Niekedy robim aj vlstne SQL (vsak sql je pekne ;). Tu je vyhoda filtrov v tom, ze sa nemusim starat o nic ine len o to co chcem a zvysok necham na WP…

  3. JohnnyPea Avatar

    Však samozrejme, že občas si treba napísať vlastné SQL, ale prečo nevyužit potenciál WP, keď to ide :)

Pridaj komentár

Vaša e-mailová adresa nebude zverejnená. Vyžadované polia sú označené *