Tak jak se blíží datum vydání nové verze WordPressu 4.0, začínají se objevovat informace zajímavé pro vývojáře. Pokud vytváříte šablony pro WordPress, určitě jste se setkali s WP_Query. Pomocí této třídy, můžete vytvářet vlastní výpis obsahu a její možnosti jsou poměrně velké.
Nyní k orderby.
Pokud jej v poli argumentů neuvedete, je základní řazení nastaveno dle data publikace a to sestupně. To znamená, že se řadí podle post_date z tabulky wp_posts.
Zároveň můžete pomocí order nastavit, zda se bude řadit sestupně, nebo vzestupně – DESC, nebo ASC. V případě, že budete chtít výpis řadit podle jiného sloupce, orderby akceptuje řetězec s názvem sloupce. Můžete řadit podle post_title, nebo author, případně použít alias title.
Kód:
$q = new WP_Query( array( 'orderby' => 'post_title' ) );
bude proveden jako
ORDER BY post_title DESC
Orderby umí navíc parsovat zadaný řetězec, takže, když zadáte názevy sloupců oddělené mezerami, budou použity takto:
$q = new WP_Query( array( 'orderby' => 'title author' ) );
bude provedeno jako
ORDER BY post_title, post_author DESC
Protože defaultní řaení v MySQL je ASC a řadí se podle sloupce, může tento kód vracet neočekávané výsledky, kdy post_title bude ASC a post_author DESC.
Změny ve WordPress 4.0
V nové verzi WordPressu je u argumentu orderby možnost zadat položky ne jako řetězec, ale v hodnotách pole, takže budete mít kontrolu nad tím, jak se budou výsledky řadit.
$q = new WP_Query( array( 'orderby' => array( 'title' => 'DESC', 'menu_order' => 'ASC' ) ) );
bude provedeno jako
ORDER BY post_title DESC, menu_order ASC
Přečteno a opsáno z WordPress.org