web-dev-qa-db-fra.com

commander par deuxième mot dans le titre?

J'ai les noms complets en tant que titres de titre et je veux le commander par le nom de famille.

Comment pourrais-je faire cela avec wordpress?

dans PHP ce serait dans le sens de -

 SELECT * from posts ORDER BY SUBSTR(LTRIM(post_title), LOCATE(' ',LTRIM(post_title)))

la catégorie de code de personnes en cours est;

$args = array(
    'posts_per_page'=>50,
    'cat'=> '39,-41',
    'orderby'=>'title',
    'order'=>'ASC',
);
query_posts($args);

comment puis-je obtenir cette deuxième commande Word?

mieux, Dan.

4
v3nt

Il existe un filtre, 'posts_orderby', qui vous permet de spécifier vos propres clauses ORDER BY. Dans votre cas, le code ressemblerait à ceci:

add_filter( 'posts_orderby', 'order_by_surname' );

function order_by_surname( $orderby, $query ) {

    // first you should check to make sure sure you're only filtering the particular query
    // you want to hack. return $orderby if its not the correct query;

    return "ORDER BY SUBSTR(
        LTRIM({$wpdb->posts}.post_title), 
        LOCATE(' ',LTRIM({$wpdb->posts}.post_title)))";

}
4
goldenapples

Votre premier exemple est une requête SQL. Aucune fonction WordPress native ne le permet.

Cela vous laisse donc avec quelques PHP options, l'exploser , str_Word_count , ainsi que sort (ou ksort) pour ensuite organiser le tableau alphabétiquement.

C’est une façon très étrange d’utiliser ce type de données. C’est dans une boîte méta que vous devez, car vous devez fondamentalement pirater la requête dans votre cas pour obtenir ce que vous voulez.

3
Wyck