o un array di oggetti. La technique que je décris ici est utile dans de nombreuses situations où, par exemple, nous avons une array de array ou un array d'objets. , senza aver accesso alla select originale (sul database) che ha generato l'elenco (array) stesso: Dans WordPress peut parfois avoir besoin de manipuler une liste de messages, dans la norme array de stdClass Object sans avoir accès à la sélection originale (sur la base de données) qui a généré la liste (array) lui-même:
1 2 3 4 5 6 7 | Matrice ( [0] => stdClass Object ( [ID] => 104 [Post_author] => 37 ... |
. Cependant, vous pouvez commander un tel array à une date ultérieure, sans passer par la base de données, en utilisant la fonction php usort() . Cela vous permet d'effectuer un tri en utilisant une fonction callback personnel. o un altro stdClass Object : Par exemple, imaginez que vous voulez commander notre poste post_author ou pour tout autre domaine qui, à son tour, peut être un array ou d'une autre stdClass Object :
1 2 3 4 5 6 7 8 9 10 | / ** * $ Messages tableau d'objets est notre "post" stdClass Object * / $posts , "__sort" ) ; usort ($ posts, "__sort"); $a , $b ) { function __ sort ($ a, $ b) { $a -> post_author == $b -> post_author ) return 0 ; if ($ a -> post_author == $ b -> post_author) return 0; $a -> post_author > $b -> post_author ) ? - 1 : 1 ; // decrescente return ($ a -> post_author> $ b -> post_author) - 1: 1, / / décroissant / / Return ($ a-> post_author <$ b-> post_author)? -1: 1, / / augmentant } |
Jouant sur plusieurs ">" et moins "<" est la dernière déclaration peut être commandé en ordre croissant ou décroissant.
Ces situations peuvent être très fréquentes dans des contextes avancés où, par exemple, aura une série de listes à numériser. Un autre exemple est le cas de regroupements, où plusieurs listes de messages, la limite récupéré de blogs différents, doit être ordonné.
1 2 3 4 5 6 7 8 9 10 11 | $posts , $lista_1 , $lista_2 , $lista_3 , ..., $lista_n ) ; array_push ($ posts, lista_1 $, lista_2 $, lista_3 $, ..., lista_n $); / ** * $ Messages est un tableau de listes, des listes de courrier récupéré qui sait * Où et qui sait ... * / $posts , "__sort" ) ; usort ($ posts, "__sort"); $a , $b ) { function __ sort ($ a, $ b) { $a -> ID == $b -> ID ) return 0 ; if ($ a -> ID == $ b -> ID) return 0; $a -> ID < $b -> ID ) ? - 1 : 1 ; return ($ a -> ID <$ b -> ID) - 1: 1; } |










bonjour,
J'ai lu votre article et est proche de ce que je dois faire.
Je dois trier les messages en fonction de la valeur du champ personnalisé différent;
par exemple trier par:
- Prix
- Nom
- Lieu
quelle est la meilleure façon de procéder?
remerciements
@ Elia :: le meilleur moyen est d'utiliser le
meta_query, introduite avec la version 3.1 de WordPress. Trouvez des exemples et documentation ici . Par exemple, vous pouvez récupérer tous les messages qui ont un prix meta_key égal à 100:2
3
get_posts ( $args ) ; $ Messages = get_posts ($ args);
...
[...] Fonction PHP usort () afin de WordPress: Commander une série de messages pour un domaine peuvent être facilement utilisés également pour commander un tableau de tableaux. Par exemple, si nous [...]
Je suis désolé si ma question est incompréhensible pour vous, je suis désolé mais je ne connais pas la tarminologia exact pour me faire mieux comprendre.
Je lance un blog créé par un ami, qui maintenant ne peut plus le suivre.
Nous avons créé un tableau qui agit comme un indice pour les différents liens. Je crée des pages "pont" et des liens vers ceux-ci sont automatiquement insérés dans le tableau. Pour l'instant, je n'ai pas la possibilité de trier ces liens de façon arbitraire!
Elles sont affichées dans l'ordre décroissant de l'insertion.
Il ya la possibilité de mettre en place un code de sorte qu'il peut, de temps à autre, décider où mettre les liens vers les pages que j'ai édité dans la Matrice?
Et par exemple: "alphabétique" ou "type" ou "importance"?
merci beaucoup pour votre disponibilité!
Lorenzo
@ Lorenzo_l: En partie, je pense que je sais, et il est bien sûr possible. D'abord, vous traquer où le programme serait assez SQL SELECT qui extrait les données là-bas et ajouter votre propre sort. Vous aurez besoin, en fin de compte, à une intervention technique qui devrait être résolu en quelques minutes.
Si vous voulez essayer, bien sûr, avec les quelques indications que j'ai, vous pouvez essayer d'ajouter un tri par moi-même.
L'instruction SELECT devrait ressembler à:
Maintenant, je ne connais pas les noms des champs, mais il suffit que vous entrez à la fin:
o non so. Où est
campoNom du champ de la table, tapeznomeou ne savent pas.Difficile d'être exhaustif ici ...