Ordonner les articles dans WordPress

11 novembre 2013 nakama

Développement

(Cet article a été écrit il y a très longtemps, dans une galaxie très très lointaine)

Vous venez de terminer un site pour votre client, il est content tout va bien :).

Il vous rappelle quelques jours plus tard et souhaite pouvoir mettre en avant les articles qu’il aura ordonnés de 0 à 20 par exemple. Et là c’est le drame … car avec WordPress si pendant la création d’un article on ne précise pas l’ordre, automatiquement il est à 0.

Comment faire ?

En ajoutant 2-3 lignes dans le fichier functions.php on va pouvoir modifier l’ordre par défaut si rien n’est précisé. Comme cela, à chaque création on ne sera plus au niveau 0 mais par exemple au niveau 200.

add_filter( 'wp_insert_post_data' , 'filter_post_data' , '99', 2  );

function filter_post_data( $data , $postarr ) {

        if($data['menu_order'] == "" && $data['post_type'] == "post")
             $data['menu_order'] = '200';

    return $data;
}

On configure l’ordre uniquement s’il est vide et s’il s’agit bien d’un post. Si cette condition n’est pas remplie, on ne touche pas au fonctionnement normal.

On pourrait avoir terminé mais non 😀 car il reste encore tous les articles déjà créé qui sont au niveau 0.

Il reste simplement à faire une petite requête SQL pour modifier l’ordre des articles de niveau 0.

$prefix = "fu_";

UPDATE `".$prefix."posts`
SET menu_order = 200
WHERE menu_order = 0;

Maintenant que tout est fait, les nouveaux articles seront à 200, les anciens aussi !

Le client va pouvoir ordonner de 0 à 20 facilement.

Mots-clés associés à cet article :

Retrouvez d'autres articles par catégories