Annonce

Important : WordPress 2.6 est disponible en français. À lire avant la migration !
Annonce 1 : Le Codex en français a besoin de vous pour avancer !
Annonce 2 : Avant de poster, n'oubliez pas de faire une petite Recherche et de lire les règles de ce forum.

#1 22-06-2007 17:41:34

dlo
Blogodépendant
Date d'inscription: 10-04-2007
Messages: 1418

Nouvelle fonctionalité de sélection des articles avec query_posts()

Bonjour,

Je viens de mettre en ligne une extension des possibilités de sélection de la fonction query_posts().
Avec ce développement, il est maintenant possible d'utiliser des opérateurs logiques pour combiner la liste de catégories qui sert de sélection.

Exemple:
Vous voulez récupérer tous les articles qui appartiennent à la fois à la catégorie 1 et 5 ? C'est possible avec Xtended Category Selection !
Vous voulez isoler les articles qui appartiennent soit à la catégorie 1, soit à la catégorie 5 mais pas aux deux en même temps ? C'est encore possible avec Xtended Category Selection !

Toute remarque ou suggestion d'amélioration est la bienvenue...

Cordialement,

Edit: Le développement n'est plus maintenu et incompatible depuis la version 2.3 de WordPress

Dernière modification par dlo (07-11-2007 09:13:43)


Non, je ne suis pas blogodépendant... C'est juste que je n'ai toujours pas trouvé la sortie de ce forum !

Hors ligne

 

#2 23-06-2007 12:05:26

Many
Blogodépendant
Lieu: Paris
Date d'inscription: 26-06-2006
Messages: 1784
Site web

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

Oh en voila un plugin qui va être apprécier par beaucoup d'utilisateurs smile

Pour l'instant pas encore de suggestion ni de feedback ...


Manyland | Blog futile ... donc indispensable

http://manalina1.free.fr/src/images/userbar_madareprez.png
http://www.wordpress-fr.net/wp-content/uploads/jmwp.jpg

Hors ligne

 

#3 23-06-2007 15:01:38

AmO
Joueur de pétanque.
Lieu: France - Nord
Date d'inscription: 19-09-2005
Messages: 5033
Site web

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

C'est une chose qui devrait être proposé sur le trac de WP.org si je peux me permettre smile


Mais vous savez, je crois pas qu'il y ait de bon ou mauvais blog... Enfin si je devais résumer ma vie aujourd'hui avec vous, je dirais que c'est d'abord des rencontres, des blogs qui m'ont tendu la main peut être à un moment où je ne pouvais pas, où j'étais seul chez moi.
http://www.wordpress-fr.net/wp-content/uploads/jmwp.jpg
WP-Box: Travailler avec un spécialiste des technologies WordPress !

Hors ligne

 

#4 03-09-2007 14:39:57

Fran6
Passionné WP
Lieu: Bale en Suisse
Date d'inscription: 19-10-2006
Messages: 103
Site web

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

Ben alors, la page n'est plus accessible ??


http://www.fran6art.com/images%20site/signature_web.jpg

Hors ligne

 

#5 04-09-2007 12:08:42

dlo
Blogodépendant
Date d'inscription: 10-04-2007
Messages: 1418

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

Fran6 a écrit:

Ben alors, la page n'est plus accessible ??

Si, si, elle est à nouveau disponible. C'était juste une plaisanterie habituelle de Free ! sad


Non, je ne suis pas blogodépendant... C'est juste que je n'ai toujours pas trouvé la sortie de ce forum !

Hors ligne

 

#6 08-09-2007 00:31:58

Mogore
Membre WP
Date d'inscription: 20-08-2007
Messages: 3

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

Cela fonctionne parfaitement !
Merci

Hors ligne

 

#7 05-11-2007 21:29:32

sebix
Membre WP
Date d'inscription: 05-11-2007
Messages: 6

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

Bonjour, je n'arrive pas à faire le faire fonctionner. Pouvez-vous m'aider? J'utilise wordpress 2.3.1.
1. j'ai bien copié le code dans functions.php en racine de mon theme
2. j'ai essayé de modifier mon fichier cathegorie-12.php avec ce code (attention je ne suis pas doué en programmation, je suis certain que cela doit venir de faute de syntaxe)
3. voici le code :
<?php query_posts("xcat=1,12&xop=AND"); ?>

<?php if (have_posts()) : while (have_posts()) : the_post(); ?>


<div class="Box"><a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title(); ?></a><small><?php the_time('    j F Y') ?></small></div>

<?php endwhile; else: ?>

<p><?php _e('Sorry, no posts matched your criteria.','CodexMagnus'); ?></p>

<?php endif; ?>   


4. Voici le message d'erreur que j'ai :
[Table 'sebyan_sebgastromome.wp_post2cat' doesn't exist]
SELECT SQL_CALC_FOUND_ROWS wp_posts.*, COUNT(*) as postnbr FROM wp_posts LEFT JOIN wp_post2cat ON (wp_posts.ID = wp_post2cat.post_id) WHERE 1=1 AND post_type = 'post' AND (post_status = 'publish' OR post_status = 'private') AND wp_post2cat.category_id IN (1, 12) GROUP BY wp_posts.ID HAVING postnbr = 2 ORDER BY post_date DESC LIMIT 0, 10


5. Que dois-je faire?
D'avance merci.
Sébastien

Dernière modification par sebix (05-11-2007 21:30:11)

Hors ligne

 

#8 05-11-2007 21:56:32

sebix
Membre WP
Date d'inscription: 05-11-2007
Messages: 6

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

Re-Bonsoir, je cherche, et visiblement cela devrait venir du code de ce 'plug-in' http://wordpress.org/support/topic/135564?replies=75

non?
Merci pour votre aide.
S

Hors ligne

 

#9 06-11-2007 12:47:36

dlo
Blogodépendant
Date d'inscription: 10-04-2007
Messages: 1418

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

Xtended Category Selection n'est pas compatible avec la version 2.3.X de WordPress.

WordPress n'utilise plus la table post2cat comme dans les versions antérieures, ce qui fait que XCS ne fonctionne plus car lui l'utilise encore ! sad

Je ne suis pas du tout sûr de continuer à supporter ce développement qui était surtout destiné à satisfaire un besoin d'un membre du forum. En plus, je n'ai pas trop le temps en ce moment... sad

Si quelqu'un d'autre veut bien se plonger dans le code, il n'y a aucun problème.

Cordialement


Non, je ne suis pas blogodépendant... C'est juste que je n'ai toujours pas trouvé la sortie de ce forum !

Hors ligne

 

#10 06-11-2007 21:05:58

sebix
Membre WP
Date d'inscription: 05-11-2007
Messages: 6

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

Merci pour ta réponse. Est-ce qu'il existe une autre methode pour arriver au meme resultat? C'est a dire pourvoir afficher tous les 'posts' de Category A et de Category B?
D'avance merci pour votre aide.
S

Hors ligne

 

#11 07-11-2007 12:16:45

dlo
Blogodépendant
Date d'inscription: 10-04-2007
Messages: 1418

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

@sebix: Vu que cela à l'air de te manquer vraiment, j'ai fait une rapide adaptation de Xtended Category Selection pour le rendre compatible avec la version 2.3 de WordPress. Je n'ai pas testé alors attention ! wink

C'est maintenant un plugin et voici le code :

Code: php

  1. <?php
  2.  
  3. /*
  4. Plugin Name: Xtended Category Selection
  5. Plugin URI:
  6. Description: Xtended Category Selection gives you the opportunity to use logical operators to combine categories during the selection of posts to display. It's an extension of function "query_posts()" possibilities.
  7. Version: 0.4.1
  8. Author: Didier Lorphelin
  9. Author URI: http://didier.lorphelin.free.fr/blog/index.php/
  10. */
  11.  
  12.  
  13. function extendedCatSelection($where) {
  14.   global $wpdb;
  15.   $newwhere = '';
  16.   $catop = strtoupper(get_query_var('xop'));
  17.   $cats = get_query_var('xcat');
  18.   if (($catop != '') && ($cats != '')) {
  19.     if ((!empty($cats)) && ($cats != '0')) {
  20.     $cats = ''.urldecode($cats).'';
  21.       $cats = addslashes_gpc($cats);
  22.       $cat_array = preg_split('/[,\s]+/', $cats);
  23.       $in_cats = '';
  24.       foreach ( $cat_array as $cat ) {
  25.         $cat = intval($cat);
  26.         $cat = trim($cat, '-');
  27.         $in_cats .= "$cat, ";
  28.       }
  29.       $in_cats = substr($in_cats, 0, -2);
  30.       if ( strlen($in_cats) > 0 )
  31.         $newwhere = " AND $wpdb->term_taxonomy.term_id IN ($in_cats) AND $wpdb->term_taxonomy.taxonomy = 'category' ";   
  32.     }
  33.   }
  34.   return $where.$newwhere;
  35. }
  36.  
  37. function extendedCatJoin($join) {
  38.   global $wpdb;
  39.   $catop = strtoupper(get_query_var('xop'));
  40.   $cats = get_query_var('xcat');
  41.   $newjoin = '';
  42.   if (($catop != '') && ($cats != '') && ($join == ''))
  43.     $newjoin = " LEFT JOIN $wpdb->term_relationships ON ($wpdb->posts.ID = $wpdb->term_relationships.object_id) LEFT JOIN $wpdb->term_taxonomy ON ($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id) ";
  44.  
  45.   return $join.$newjoin;
  46. }
  47.  
  48. function extendedCatGroupBy($groupby) {
  49.   global $wpdb;
  50.   $catop = strtoupper(get_query_var('xop'));
  51.   $cats = get_query_var('xcat');
  52.   $having = '';
  53.   if (($catop != '') && ($cats != '')) {
  54.     if ((!empty($cats)) && ($cats != '0')) {
  55.     $cats = ''.urldecode($cats).'';
  56.       $cats = addslashes_gpc($cats);
  57.       $cat_array = preg_split('/[,\s]+/', $cats);
  58.       $cat_number = count($cat_array);
  59.       if ($catop == "AND")
  60.         $having = " HAVING postnbr = $cat_number ";
  61.       if ($catop == "OR")
  62.         $having = " HAVING postnbr <= $cat_number ";
  63.       if ($catop == "XOR")
  64.         $having = " HAVING postnbr = 1 ";
  65.       $groupby = "{$wpdb->posts}.ID";
  66.     }
  67.   }
  68.   return $groupby.$having;
  69. }
  70.  
  71. function extendedCatFields($fields) {
  72.   global $wpdb;
  73.   $catop = strtoupper(get_query_var('xop'));
  74.   $cats = get_query_var('xcat');
  75.   $countrows = '';
  76.   if (($catop != '') && ($cats != '')) {
  77.     $countrows = ", COUNT(*) as postnbr ";
  78.   }
  79.   return $fields.$countrows;
  80. }
  81.  
  82.  
  83. add_filter('posts_where','extendedCatSelection');
  84. add_filter('posts_join', 'extendedCatJoin');
  85. add_filter('posts_groupby', 'extendedCatGroupBy');
  86. add_filter('posts_fields', 'extendedCatFields');
  87.  
  88. ?>


Et voici le mode d'emploi :

Code: txt

  1. /*
  2. Plugin Name: Extended Category Selection
  3. Plugin URI: http://didier.lorphelin.free.fr/blog/index.php/
  4. Description: Xtended Category Selection gives you the opportunity to use logical operators to combine categories during the selection of posts to display. It's an extension of function "query_posts()" possibilities.
  5. Version: 0.4.1
  6. Author: Didier Lorphelin
  7. Author URI: http://didier.lorphelin.free.fr/blog/index.php/
  8. */
  9.  
  10.  
  11.  
  12. 1. A quoi ça sert ?
  13. Xtended Category Selection permet d'utiliser les opérateurs logiques pour combiner les catégories retenues lors de la sélection des articles à afficher. C'est une extension des possibilités de la fonction "query_posts()".
  14.  
  15. 2. Prérequis
  16. WordPress: Xtended Category Selection requiert l'utilisation de WP 2.3 (ou supérieur). Il est compatible avec toutes les versions de WordPress jusqu'à la dernière (2.3.1).
  17.  
  18. 3. Installation
  19. Télécharger le fichier compressé.
  20. Décompresser et copier tous les fichiers dans le répertoire du thème auquel on rajoute l'extension de sélection des catégories.
  21. Si le thème utilisé possède déjà un fichier functions.php, recopier le contenu du fichier XtendedCat.php dans le fichier functions.php. Sinon renommer le fichier XtendedCat.php en functions.php.
  22. Modifier les fichiers concernés du thème pour y ajouter un query_post() avec les nouveaux paramètres.
  23. (Note: En cas de mise à jour d'une version antérieure, écraser simplement les fichiers existants avec les nouveaux.)
  24.  
  25. 4. Documentation
  26. Après installation du fichier, deux paramètres supplémentaires sont disponibles dans la fonction "query_posts" pour combiner entre elles les catégories à sélectionner.
  27. Paramètres :
  28.  
  29. xcat: liste des catégories séparée par une virgule
  30. xop:  Opérateur logique à appliquer à la liste xcat
  31.            Valeurs possibles:
  32.                   AND : l'article doit appartenir à toutes les catégories listées.
  33.                   OR    : l'article doit appartenir à une des catégories listées.
  34.                   XOR : l'article doit appartenir à une et une seule des catégories listée.
  35. Cela s'utilise donc comme ceci :
  36.  
  37. Code: php
  38. // JE NE VEUX QUE LES ARTICLES APPARTENANT A LA FOIS A LA CATEGORIE 1 ET 5
  39. <?php query_posts("xcat=1,5&xop=AND"); ?>
  40. <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  41. <?php // ajouter le code d'affichage des articles ?> 
  42. <?php endwhile; else: ?>
  43. <p><?php _e('Sorry, no posts matched your criteria.','CodexMagnus'); ?></p>
  44. <?php endif; ?>
  45.  
  46. ATTENTION: Ne pas utiliser le paramètre cat et xcat en même temps. Le résultat risque d'être imprévisible.
  47.  


En espérant que cela puisse te servir.

Cordialement


Non, je ne suis pas blogodépendant... C'est juste que je n'ai toujours pas trouvé la sortie de ce forum !

Hors ligne

 

#12 07-11-2007 12:32:54

sebix
Membre WP
Date d'inscription: 05-11-2007
Messages: 6

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

Génial et merci pour ton temps. Je vais tester tout cela. Encore merci.S
bierebig_smile

Hors ligne

 

#13 07-11-2007 17:16:41

sebix
Membre WP
Date d'inscription: 05-11-2007
Messages: 6

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

@dlo
un grand merci cea fonctionne parfaitement, j'espere finalisé mon site et être le meilleur exemple pour illustrer cette fonction manquante à l'API de wordpress.
Encore merci vous venez de faire un heureux smile
Cordialement
S

Hors ligne

 

#14 07-11-2007 17:30:12

dlo
Blogodépendant
Date d'inscription: 10-04-2007
Messages: 1418

Re: Nouvelle fonctionalité de sélection des articles avec query_posts()

sebix a écrit:

un grand merci cela fonctionne parfaitement

Youpiii, chouette et toutes ces sortes de choses !!!! tongue

Y'a pas d'quoi.... et Happy blogging, comme on dit en français.wink


Non, je ne suis pas blogodépendant... C'est juste que je n'ai toujours pas trouvé la sortie de ce forum !

Hors ligne

 

Pied de page des forums

Propulsé par PunBB 1.2.17
© Copyright 2005-2006 WordPress France

Tous droits réservés - wordpress-fr.net © 2005-2006

  • RSS
WPfr ValidatorXhtml ValidatorCSS mysql Php GetFirefox
Design par AmO - Crédits - Equipe WordPress France

Réseau International : Hongrie - Allemagne - Grèce - Italie - Japon - Corée - Suisse - Turquie - USA