Bonjour à toutes et à tous,
Je suis entrain de construire un thème wordpress pour une association et je rencontre des difficultés avec la boucle wordpress ainsi que la manière de la customiser pour afficher ce que l'on veut.
La situation : j'ai différents produits (légumes, fruits, pain, gallette, etc) et je veux les afficher sur une page dédiée, accessible depuis l'accueil, qui va afficher les bons produits selon que l'on clique sur le lien "Légumes & Fruits" ou "Céréals" ou "Viandes", etc.
J'ai donc commencé par créer une page "Légumes & Fruits" et une autre page "Céréals". J'ai ensuite créer dans le function.php, des customs posts ainsi qu'une taxonomy pour pouvoir gérer les produits dans l'admin de wordpress :
Ensuite j'ai ajouté les produits via l'admin et j'ai ajouter différencié les produits via les taxonomy, en ajouter des types comme "legumes_fruits" ou bien "cereals" afin de pouvoir trier dans ma boucle pour n'afficher que les produits correspondants.
Enfin, j'ai créé un template de page pour afficher les produits : "template-pageproduit.php". A l'intérieur se trouve ma fameuse boucle qui me casse les pieds car malgré que je lui spécifie que je ne veux que tel ou tel produit, elle m'affiche tout ! Quoi que je fasse... Avez-vous une solution s'il vous plait ? Merci d'avance à ceux qui me répondront !
Voici le code de template-pageproduit.php :
Je suis entrain de construire un thème wordpress pour une association et je rencontre des difficultés avec la boucle wordpress ainsi que la manière de la customiser pour afficher ce que l'on veut.
La situation : j'ai différents produits (légumes, fruits, pain, gallette, etc) et je veux les afficher sur une page dédiée, accessible depuis l'accueil, qui va afficher les bons produits selon que l'on clique sur le lien "Légumes & Fruits" ou "Céréals" ou "Viandes", etc.
J'ai donc commencé par créer une page "Légumes & Fruits" et une autre page "Céréals". J'ai ensuite créer dans le function.php, des customs posts ainsi qu'une taxonomy pour pouvoir gérer les produits dans l'admin de wordpress :
// Ajouter un nouveau type de post (custom post) : les produits
add_action('init', 'my_custom_init');
function my_custom_init()
{
register_post_type(
'produit',
array(
'label' => 'Produits',
'labels' => array(
'name' => 'Produits',
'singular_name' => 'Produits',
'all_items' => 'Tous les produits',
'add_new_item' => 'Ajouter un produit',
'edit_item' => 'Éditer le produit',
'new_item' => 'Nouveau produit',
'view_item' => 'Voir le produit',
'search_items' => 'Rechercher parmi les produits',
'not_found' => 'Pas de produits trouvé',
'not_found_in_trash'=> 'Pas de produits dans la corbeille'
),
'public' => true,
'capability_type' => 'post',
'supports' => array(
'title',
'editor',
'thumbnail'
),
'has_archive' => false
)
);
register_taxonomy(
'type',
'produit',
array(
'label' => 'Types',
'labels' => array(
'name' => 'Types',
'singular_name' => 'Type',
'all_items' => 'Tous les types',
'edit_item' => 'Éditer le type',
'view_item' => 'Voir le type',
'update_item' => 'Mettre à jour le type',
'add_new_item' => 'Ajouter un type',
'new_item_name' => 'Nouveau type',
'search_items' => 'Rechercher parmi les types',
'popular_items' => 'Types les plus utilisés'
),
'hierarchical' => true
)
);
}
Ensuite j'ai ajouté les produits via l'admin et j'ai ajouter différencié les produits via les taxonomy, en ajouter des types comme "legumes_fruits" ou bien "cereals" afin de pouvoir trier dans ma boucle pour n'afficher que les produits correspondants.
Enfin, j'ai créé un template de page pour afficher les produits : "template-pageproduit.php". A l'intérieur se trouve ma fameuse boucle qui me casse les pieds car malgré que je lui spécifie que je ne veux que tel ou tel produit, elle m'affiche tout ! Quoi que je fasse... Avez-vous une solution s'il vous plait ? Merci d'avance à ceux qui me répondront !
Voici le code de template-pageproduit.php :
/*
Template Name: Page_Produits
*/
?>
<?php get_header(); ?>
<div class="row main_content page_produits">
<h1><?php the_title(); ?></h1>
<?php
// On récupère l'identifiant de la page appelée et on teste pour savoir quel produit est demandée
/* on fait de $wp_query une variable globale */
global $wp_query;
/* on stocke la variable dans un nom de variable inutilisé */
$page_ID = $wp_query->post->ID;
if($page_ID == 40) {
$produits = 'legumes_fruits';
}
elseif($page_ID == 42) {
$produits = 'cereals';
}
?>
<?php
// personalisation de la boucle
$args= array(
'post_type' => 'produit', // on affiche seulement les produits
'taxonomy' => $produits, // on trie les produits par type
'order' => 'ASC' // on affiche les produits par ordre ascendant
);
?>
<?php query_posts($args); ?>
<!-- Début de la première boucle -->
<?php while (have_posts()) : the_post();?>
<!-- Affichage du contenu de la boucle-->
<section class="col-lg-4 bloc_gauche">
<div class="entete">
<?php the_post_thumbnail('full', array('class' => 'alignleft')); ?>
<h1><?php the_title(); ?></h1>
</div>
<div class="produit">
<?php the_content(); ?>
</div>
</section>
<?php // Fin boucle
endwhile;
wp_reset_query();
?>
</div>
<?php get_footer(); ?>