it-swarm-eu.dev

Objednat příspěvky podle ID v daném pořadí

V back-office mého tématu si mohou uživatelé vybrat, které příspěvky se budou zobrazovat na titulní stránce, a mohou také zvolit v jakém pořadí se mají vybrané příspěvky zobrazit .

Takhle jsem se snažil:

$aPostsIDs = array(1,3,2); // Note the 3 should appear before the 2
query_posts(array('post_type' => 'page', 
                  'post__in' => $aPostsIDs,
                  'order_by' => 'FIELD(ID, '.implode(',',$aPostsIDs).')'));

Ale podle očekávání to nefunguje. Správný způsob, jak to udělat podle kodexu je:

add_filter('posts_orderby', 'edit_posts_orderby');
function edit_posts_orderby($orderby_statement) {
    global $aPostsIDs;
    $orderby_statement = 'FIELD(ID, '.implode(',',$aPostsIDs).')';
    return $orderby_statement;
}

Ale to ještě nefunguje! Sloupky jsou řazeny podle ID (1, 2, 3) namísto daného pořadí (1, 3, 2).

Kde bych se měl podívat? dík

4
Rovb

Počínaje WordPress 3.5, parametr orderby umožní hodnotu post__in seřadit podle pořadí parametru post__in, stejně jako ve vašem příkladu.

To nemusí být ideální čekat nebo vyžadovat 3,5+, ale to bude téměř jistě nejlepší a nejjednodušší způsob, jak dělat to, co hledáte.

Zde je relevantní trac lístek pokud chcete podrobnosti.

4
mrwweb