Bonjour à tous.

J'ai une petite question sur les permaliens. Je fais un filtre pour afficher des offres d'emploi par secteur. Comme j'ai plusieurs secteurs, j'utilise un if() pour chaque cas, histoire d'économiser le nombre de fichier. Actuellement j'utilise un stripos() pour vérifier le nom de la page dans l'URL et afficher le bon filtre.

Je me doute bien que cette méthode est limité, car si on rajoute un nouveau secteur, ce dernier ne marchera pas.

Y a-t-il une façon dynamique pour vérifier la page sur laquelle on est sur wordpress ?

Merci par avance pour vos réponses,

3 réponses


Voilà ce que j'ai actuellement :

if (stripos($urlrecup, 'mapagesecteur1') !== FALSE) {
$args = array(
'post_type' => 'offre-item',
'tax_query' => array(
array(
'taxonomy' => 'mataxocustom',
'field' => 'slug',
'terms' => 'secteur1'
)),
'posts_per_page' => 15,
'paged' => $paged
);
}elseif (stripos($urlrecup, 'mapagesecteur2') !== FALSE) {
$args = array(
'post_type' => 'offre-item',
'tax_query' => array(
array(
'taxonomy' => 'mataxocustom',
'field' => 'slug',
'terms' => 'secteur2'
)),
'posts_per_page' => 15,
'paged' => $paged
);
}

ça fonctionne, mais j'aimerais que ça soit maintenable. Si on rakjoute un secteur dans le BO, il ne s'affichera pas tant qu'on ne sera pas intervenu dans le code.

voici ce que l'on m'a conseillé, mais ça ne marche pas :

// On récupère la liste des secteurs de la page
// (dans ton cas, il n'y en aura qu'un seul mais bon
$secteurs = get_the_terms( get_the_ID(), 'sector-category' );

                    // On boucle sur ce(s) secteur(s) pour en récupérer les IDs
                    $secteurs_ids = array_map(function($secteur) {
                        return $secteur->term_id;
                    }, $secteurs);

                    // On inclue ça dans la WP_Query
                    $args = array(
                        'post_type' => 'offre-item',
                        'tax_query' => array(
                            array(
                                'taxonomy' => 'sector-category',
                                'field'    => 'term_id',
                                'terms'    => $secteurs_ids,
                                'operator' => 'IN',
                            )),
                        'posts_per_page' => 15,
                        'paged' => $paged
                    );

On me conseil de lier la taxonomy avec mon template de page, mais je peux pas le faire car c'est justement un template qui apparait dans la liste des templates dans l'interface "page" du BO. Je ne peux pas utiliser un fichier taxonomy-nondelataxo-nomduterm.php pour filtrer.

Hello,
si je résume, tu as :

  • un custom post type offres,
  • une custom taxonomy secteur-category associée au custom post type offres,
  • des terms secteur xx dans la custom taxonomy secteur-category
  • une page Offres

et tu veux lister sur la page Offres les offres groupées par secteur ?
ou bien
tu veux lister les secteurs sur la page Offres et avoir une page spécifique par secteur qui liste les offres de ce secteur ?