Lepší řazení výsledků pomocí WP_Query ve Wordpress 4.0 - Affinite.io CZ

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

Timeline Wordpress plugin
Timeline Wordpress plugin
23 Srp, 2014
50% sleva na předplatné od Themes4all
50% sleva na předplatné od Themes4all
29 Srp, 2014

Komentáře nejsou povoleny.

Looking for something?