web-dev-qa-db-fra.com

get_categories () pour seulement CPT

Sur le site sur lequel je travaille, j'ai Jobs en tant que type de publication personnalisé et Emplacements en tant que taxonomie personnalisée. Les emplacements sont utilisés par les emplois, les postes et d’autres CPT.

Je travaille sur un petit filtre pour les travaux et souhaite afficher une liste de tous les emplacements sous forme de liens qui, une fois que vous avez cliqué sur l'un d'eux, permettent de trier la page afin d'afficher uniquement les emplois situés à cet emplacement. Utiliser des requêtes de liens simples.

J'utilise get_categories () pour générer la liste des emplacements, mais le problème avec cette fonction est que cela ne me permettra pas de spécifier le type de message et d'afficher tout emplacements qui ont n'importe quel type de poste. Je me retrouve donc avec une liste d'emplacements où tous les emplois ne sont pas créés. Lorsque vous cliquez sur le lien, une page 404 s'affiche.

            <?php      
          $args = array(
            'type'                     => 'post', //changing this to jobs does not have any effect...
            'child_of'                 => 0,
            'parent'                   => 0,
            'orderby'                  => 'count',
            'order'                    => 'DESC',
            'hide_empty'               => 1,
            'hierarchical'             => 0,
            'exclude'                  => '',
            'include'                  => '',
            'number'                   => '9999',
            'taxonomy'                 => 'location',
            'depth'                    => 0,
            'pad_counts'               =>  true);

          $categories = get_categories($args);
            $checked = false;
            foreach($categories as $category) {
              echo '<li><a href="/jobs/?location='.$category->slug.'">'.$category->name.'</a></li>';
            } 
          ?>

Comment dire à get_categories () d'afficher uniquement post_type => Jobs? Existe-t-il un autre moyen d'afficher une liste d'emplacements et de masquer ceux qui ne contiennent pas de travail?

Merci d'avance!

1
Radi

Vous devriez utiliser wp_get_post_terms() au lieu de get_categories(). Il retourne un tableau de termes associés à un post.

<?php
function get_my_custom_terms() {
    global $post;
    $myterms = wp_get_post_terms($post->ID, 'location');

    if ($myterms) {
        foreach($myterms as $term) {
            $termname = $term->name;
            $term_link = get_term_link( $term->slug, 'location' );
                if( is_wp_error( $term_link ) ) {
                    $termlink = $term_link;
                } else {
                    $termlink = '/jobs/?location=' .$term->slug;
                }
            echo '<li><a href="' . $termlink . '">'. $termname .'</a></li>';
        }
    }
}
1
Abhik

get_categories n'a pas de concept de type de publication, il ne recherche que le terme de taxonomie et les termes qui comptent. Le nombre de publications n'est pas généré au moment de l'exécution, et il n'y a pas de comptes différents pour différents types de publications.

Pour obtenir ce que vous voulez, vous devez procéder de l’une des manières suivantes:

  • enregistrer un rappel de compte personnalisé, qui ne compterait que les publications d'emplois. L'inconvénient est que le décompte sera toujours composé de postes, les autres postes ne pourront pas avoir leur propre décompte.
  • Forcer les listes à ne montrer que les emplois. Cependant, cela empêchera les inscriptions d'autres types d'articles.

Enfin, ma méthode recommandée:

Créer une taxonomie pour les lieux de travail. Ce que vous essayez de faire omet de reconnaître que l'emplacement d'un travail n'est pas identique à l'emplacement d'un poste ou d'un type de poste et que chacun doit avoir des taxonomies distinctes pour l'emplacement si elles doivent être répertoriées et comptées séparément.

Si vous devez ensuite faire des URL plus complexes et des comparaisons entre les taxonomies, je suggère ceci comme matériel de lecture:

http://thereforei.am/2011/10/28/advanced-taxonomy-queries-with-pretty-urls/

0
Tom J Nowell