Lepší řazení výsledků pomocí WP_Query ve WordPress 4.0

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

About The Author

Zajímá mne Wordpress, responsivní šablony a zkrátka vše kolem tohoto skvělého redakčního systému.

Související články

1 Comments

Přidejte komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *