Nouvelle fonctionalité de sélection des articles avec query_posts() (Créer un compte)

  • Statut : non résolu
14 sujets de 1 à 14 (sur un total de 14)
  • Auteur
    Messages
  • #452742
    dlo
    Participant
    Maître WordPress
    1850 contributions

    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

    #603543
    Many
    Participant
    Maître WordPress
    1485 contributions

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

    Pour l’instant pas encore de suggestion ni de feedback …

    #603544
    AmO
    Participant
    Maître WordPress
    4451 contributions

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

    #603545
    Fran6
    Participant
    Chevalier WordPress
    107 contributions

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

    #603546
    dlo
    Participant
    Maître WordPress
    1850 contributions
    Fran6 wrote:
    Ben alors, la page n’est plus accessible ??

    Si, si, elle est à nouveau disponible. C’était juste une plaisanterie habituelle de Free ! :(

    #603547
    Mogore
    Membre
    Initié WordPress
    3 contributions

    Cela fonctionne parfaitement !
    Merci

    #603548
    sebix
    Membre
    Initié WordPress
    6 contributions

    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 :

    <a href="” title=””>

    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

    #603549
    sebix
    Membre
    Initié WordPress
    6 contributions

    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

    #603550
    dlo
    Participant
    Maître WordPress
    1850 contributions

    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 ! :(

    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… :(

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

    Cordialement

    #603551
    sebix
    Membre
    Initié WordPress
    6 contributions

    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

    #603552
    dlo
    Participant
    Maître WordPress
    1850 contributions

    @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 ! 😉

    C’est maintenant un plugin et voici le code :

     0 )
    				$newwhere = ” AND $wpdb->term_taxonomy.term_id IN ($in_cats) AND $wpdb->term_taxonomy.taxonomy = ‘category’ “;		
    		}
    	}
    	return $where.$newwhere;
    }
    
    function extendedCatJoin($join) {
    	global $wpdb;
    	$catop = strtoupper(get_query_var(‘xop’));
    	$cats = get_query_var(‘xcat’);
    	$newjoin = ”;
    	if (($catop != ”) && ($cats != ”) && ($join == ”)) 
    		$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) “;
    
    	return $join.$newjoin;
    }
    
    function extendedCatGroupBy($groupby) {
    	global $wpdb;
    	$catop = strtoupper(get_query_var(‘xop’));
    	$cats = get_query_var(‘xcat’);
    	$having = ”;
    	if (($catop != ”) && ($cats != ”)) {
    		if ((!empty($cats)) && ($cats != ‘0’)) {
     			$cats = ”.urldecode($cats).”;
    			$cats = addslashes_gpc($cats);
    			$cat_array = preg_split(‘/[,s]+/’, $cats);
    			$cat_number = count($cat_array);
    			if ($catop == “AND”) 
    				$having = ” HAVING postnbr = $cat_number “;
    			if ($catop == “OR”)
    				$having = ” HAVING postnbr posts}.ID”;
    		}
    	}
    	return $groupby.$having; 
    }
    
    function extendedCatFields($fields) {
    	global $wpdb;
    	$catop = strtoupper(get_query_var(‘xop’));
    	$cats = get_query_var(‘xcat’);
    	$countrows = ”;
    	if (($catop != ”) && ($cats != ”)) {
    		$countrows = “, COUNT(*) as postnbr “;
    	}
    	return $fields.$countrows;
    }
    
    
    add_filter(‘posts_where’,’extendedCatSelection’);
    add_filter(‘posts_join’, ‘extendedCatJoin’);
    add_filter(‘posts_groupby’, ‘extendedCatGroupBy’);
    add_filter(‘posts_fields’, ‘extendedCatFields’);
    
    ?>

    Et voici le mode d’emploi :

    /*
    Plugin Name: Extended Category Selection
    Plugin URI: http://didier.lorphelin.free.fr/blog/index.php/
    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.
    Version: 0.4.1
    Author: Didier Lorphelin
    Author URI: http://didier.lorphelin.free.fr/blog/index.php/
    */
    
    
    
    1. A quoi ça sert ?
    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()”.
    
    2. Prérequis
    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).
    
    3. Installation
    Télécharger le fichier compressé.
    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.
    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.
    Modifier les fichiers concernés du thème pour y ajouter un query_post() avec les nouveaux paramètres.
    (Note: En cas de mise à jour d’une version antérieure, écraser simplement les fichiers existants avec les nouveaux.)
    
    4. Documentation
    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.
    Paramètres :
    
    xcat: liste des catégories séparée par une virgule
    xop:  Opérateur logique à appliquer à la liste xcat
               Valeurs possibles:
                      AND : l’article doit appartenir à toutes les catégories listées.
                      OR    : l’article doit appartenir à une des catégories listées.
                      XOR : l’article doit appartenir à une et une seule des catégories listée.
    Cela s’utilise donc comme ceci :
    
    Code: php
    // JE NE VEUX QUE LES ARTICLES APPARTENANT A LA FOIS A LA CATEGORIE 1 ET 5
    
    
      
    
    <p></p>
    
    
    ATTENTION: Ne pas utiliser le paramètre cat et xcat en même temps. Le résultat risque d’être imprévisible.

    En espérant que cela puisse te servir.

    Cordialement

    #603553
    sebix
    Membre
    Initié WordPress
    6 contributions

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

    #603554
    sebix
    Membre
    Initié WordPress
    6 contributions

    @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 🙂
    Cordialement
    S

    #603555
    dlo
    Participant
    Maître WordPress
    1850 contributions
    sebix wrote:
    un grand merci cela fonctionne parfaitement

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

    Y’a pas d’quoi…. et Happy blogging, comme on dit en français.😉

14 sujets de 1 à 14 (sur un total de 14)
  • Le forum ‘Dépôts pour les extensions, trucs, astuces’ est fermé à de nouveaux sujets et réponses.