[Résolu] boucle categorie (Créer un compte)

  • Statut : non résolu
13 sujets de 1 à 13 (sur un total de 13)
  • Auteur
    Messages
  • #456848
    lepski98
    Membre
    Chevalier WordPress
    193 contributions

    Bonjour,

    Ma configuration WP actuelle
    – Version de WordPress :
    – Thème utilisé :
    – Plugins en place :
    – Nom de l’hebergeur :
    – Adresse du site :

    Problème(s) rencontré(s) :

    Salut à tous,

    je bloc sur un script.. je vais essayer d’expliquer ce que je veux faire.

    j’ai un menu catégorie avec

    CONSTRUCTEURS (id3)
    –FORD
    –NISSAN
    –RENAULT….

    j’ai crée une page categorie-3.php, sur cette page j’aimerais faire une boucle pour récupérer les 3 derniers posts par sous catégorie….

    Donc on ouvre la page categorie3.php (alias CONSTRUCTEURS) et par un système de boucle foreach on affiche, les 3 derniers posts de Ford, les 3 derniers de Nissan et les 3 derniers de Renault (3 ou 1 ou plus…) et le dernier post (headlines) de toute la sous catégorie…. MAIS Attention je voudrais que la boucle s’adapte en fonction de la création de contructeurs sans avoir à toucher au code….

    Ce système permettrait d’automatiser le résultat et d’éviter de retoucher le code… le but étant de créer un thème sans que les gens mettent le nez dans le code….

    merci de m’aider…svp

    #619987
    AmO
    Participant
    Maître WordPress
    4449 contributions

    Cas intéressant !
    Essaie ça, j’ai documenter pour que tu comprennes 🙂

    <?php
    	// On recupere la categorie courante
    	$cat_id = get_query_var('cat');
    	
    	// On recupere la liste des categories filles de cette categorie
    	$children = get_category_children( $cat_id, ',' );
    	
    	// On met la liste dans un tableau
    	$children = explode(',', $children);
    	
    	// On boucle sur la liste des categories
    	foreach ( $children as $category_id ) {
    		// On affiche le titre de la categorie
    		echo '<h4>‘. get_cat_name($category_id) . ‘</h4>‘;
    		
    		// On recupere les premiers 3 articles de la categorie
    		global $post;
    		$myposts = get_posts(‘numberposts=3&category=’.$category_id);
    		
    		if ( $myposts ) : // On affiche la liste s’il y a des articles
    			echo ‘<ul>‘;
    		
    			foreach($myposts as $post) :
    			setup_postdata($post);
    			?>
    				<li><a href="”></a> — </li>
    			<?php 
    			endforeach;
    		
    			echo '</ul>‘;
    		endif;	
    	}
    	
    	// On supprime nos variables
    	unset($cat_id, $children, $category_id, $myposts);
    ?>

    #619988
    lepski98
    Membre
    Chevalier WordPress
    193 contributions

    la vache ça marche…. pffff amo tu me tueras !!!!!

    2 remarques :

    dans la liste il boucle sur BMW alors qu’il n’y a pas d’article…. je pense qu’il faudrait retirer la cat qui n’a pas d’article….

    et comment faire pour séparer les 3 premiers articles en haut de la page (liste des 3 derniers articles de la catégorie constructeurs) >>>> genre je fais un bloc à gauche

    et à droite je n’affiche que les boucles sur les articles des catégories enfants.

    sinon c’est cool…. magnifique….

    voici le lien pour voir le code en action….

    http://www.o2multimedia.com/demo/category/constructeurs/

    #619989
    AmO
    Participant
    Maître WordPress
    4449 contributions

    Pour ne pas afficher le titre, si il y a pas d’articles.

    <?php
    	// On recupere la categorie courante
    	$cat_id = get_query_var('cat');
    	
    	// On recupere la liste des categories filles de cette categorie
    	$children = get_category_children( $cat_id, ',' );
    	
    	// On met la liste dans un tableau
    	$children = explode(',', $children);
    	
    	// On boucle sur la liste des categories
    	foreach ( $children as $category_id ) {	
    		// On recupere les premiers 3 articles de la categorie
    		global $post;
    		$myposts = get_posts('numberposts=3&category='.$category_id);
    		
    		if ( $myposts ) : // On affiche la liste s'il y a des articles
    		        // On affiche le titre de la categorie
    		        echo '<h4>‘. get_cat_name($category_id) . ‘</h4>‘;
    
    			echo ‘<ul>‘;
    		
    			foreach($myposts as $post) :
    			setup_postdata($post);
    			?>
    				<li><a href="”></a> — </li>
    			<?php 
    			endforeach;
    		
    			echo '</ul>‘;
    		endif;	
    	}
    	
    	// On supprime nos variables
    	unset($cat_id, $children, $category_id, $myposts);
    ?>

    Pour le reste c’est du CSS.
    Rien de bien mechant pour un integrateur 😉

    #619990
    lepski98
    Membre
    Chevalier WordPress
    193 contributions

    un grand merci AMO….

    #619991
    AmO
    Participant
    Maître WordPress
    4449 contributions

    Pas de quoi !

    #619992
    lepski98
    Membre
    Chevalier WordPress
    193 contributions

    Amo, j’ai encore un point que je voudrais modifier mais je n’y parviens pas….

    En faites j’ai donc :

    la catégorie CONSTRUCTEURS et les catégories filles FORD, OPEL, BMW, NISSAN, RENAULT…. OK

    ton script fonctionne parfaitement MAIS…. le problème c’est qu’il affiche en haut dans le premier bloc la liste des 3 derniers posts DE LA CATEGORIE CONSTRUCTEURS !!!! puis les enfants de la cat…

    dans cette colonne du milieu je ne voudrais avoir que les enfants et dans la colonne de droite les 3 derniers billets de la catégorie CONSTRUCTEURS….

    voici la page en action ICI

    merci de m’aider…. je suis intégrateur pas développeur…. lol…..😉

    #619993
    AmO
    Participant
    Maître WordPress
    4449 contributions
    <?php
    	// On recupere la categorie courante
    	$cat_id = get_query_var('cat');
    	
    	// On recupere la liste des categories filles de cette categorie
    	$children = get_category_children( $cat_id, ',' );
    	
    	// On met la liste dans un tableau
    	$children = explode(',', $children);
    	
    	// On boucle sur la liste des categories
    	foreach ( $children as $category_id ) {	
    		// On saute la categorie parent
    		if ( $category_id == $cat_id ) continue;
    
    		// On recupere les premiers 3 articles de la categorie
    		global $post;
    		$myposts = get_posts('numberposts=3&category='.$category_id);
    		
    		if ( $myposts ) : // On affiche la liste s'il y a des articles
    			// On affiche le titre de la categorie
    			echo '<h4>‘. get_cat_name($category_id) . ‘</h4>‘;
    
    			echo ‘<ul>‘;
    		
    			foreach($myposts as $post) :
    			setup_postdata($post);
    			?>
    				<li><a href="”></a> — </li>
    			<?php 
    			endforeach;
    		
    			echo '</ul>‘;
    		endif;	
    	}
    	
    	// On supprime nos variables
    	unset($cat_id, $children, $category_id, $myposts);
    ?>

    Pour la categorie parent, il te suffit prendre la boucle des articles et tu remplaces:
    $myposts = get_posts(‘numberposts=3&category=’.$category_id);
    par
    $myposts = get_posts(‘numberposts=3&category=’.$cat_id);

    #619994
    lepski98
    Membre
    Chevalier WordPress
    193 contributions

    on dirait qu’il ne saute pas la catégorie parent…

    #619995
    lepski98
    Membre
    Chevalier WordPress
    193 contributions
    // On saute la categorie parent
    
              if ( $category_id == ” ) continue;

    Voilà après 1 heure de test et d’essai j’ai réussi à retirer la catégorie PARENT > CONSTRUCTEURS de la colonne du milieu.

    #619996
    AmO
    Participant
    Maître WordPress
    4449 contributions

    je vois pas ce qui cloche dans mon code 🙂

    #619997
    lepski98
    Membre
    Chevalier WordPress
    193 contributions

    sinon le script est parfait….. ENCORE un GRAND MERCI AMO……..

    #619998
    AmO
    Participant
    Maître WordPress
    4449 contributions

    🍺

13 sujets de 1 à 13 (sur un total de 13)
  • Le forum ‘Utilisation spécifique de WordPress’ est fermé à de nouveaux sujets et réponses.