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í…
Pridaj komentár