it-swarm.com.de

get_categories () nur für CPT

Auf der Site, an der ich arbeite, habe ich Jobs als benutzerdefinierten Beitragstyp und Standorte als benutzerdefinierte Taxonomie. Die Standorte werden von Jobs, Posts und anderen CPTs verwendet.

Ich arbeite an einem kleinen Filter für die Jobs und möchte eine Liste aller Standorte als Links anzeigen, die nach dem Klicken auf einen die Seite so sortieren, dass nur Jobs an diesem Standort angezeigt werden. Einfache Linkabfragen verwenden.

Ich benutze get_categories () , um die Liste der Standorte zu generieren, aber das Problem mit dieser Funktion ist, dass ich nicht den Post-Typ angeben kann und alle anzeigen kann Standorte, die über eine beliebige Art von Post verfügen. So ende ich mit einer Liste von Standorten, die nicht alle Jobs haben, und wenn Sie auf den Link klicken, wird eine 404-Seite angezeigt.

            <?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>';
            } 
          ?>

Wie kann get_categories () angewiesen werden, nur post_type => Jobs anzuzeigen? Gibt es eine andere Möglichkeit, eine Liste der Standorte anzuzeigen und diejenigen auszublenden, die keine Jobs enthalten?

Danke im Voraus!

1
Radi

Sie sollten wp_get_post_terms() anstelle von get_categories() verwenden. Es wird ein Array von Begriffen zurückgegeben, die einem Beitrag zugeordnet sind.

<?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 hat kein Konzept für den Post-Typ. Es wird nur der Taxonomiebegriff angezeigt, und dieser Begriff wird nach dem Zählen verwendet. Die Anzahl der Posts wird weder zur Laufzeit generiert, noch gibt es unterschiedliche Zählungen für verschiedene Post-Typen.

Führen Sie stattdessen einen der folgenden Schritte aus, um das gewünschte Ergebnis zu erzielen:

  • registrieren Sie einen benutzerdefinierten Rückruf für die Anzahl, der nur die Stellenausschreibungen zählt. Der Nachteil dabei ist, dass es sich bei der Zählung immer um Stellen handelt, andere Stellen können keine eigene Zählung haben.
  • Erzwingen Sie, dass in den Auflistungen nur Jobs angezeigt werden. Dies verhindert jedoch die Auflistung anderer Beitragstypen.

Zum Schluss meine empfohlene Methode:

Erstellen Sie eine Taxonomie für Arbeitsorte. Bei dem, was Sie versuchen, wird nicht anerkannt, dass der Standort eines Jobs nicht mit dem Standort eines Postings oder eines anderen Posting-Typs identisch ist, und jeder sollte separate Taxonomien für den Standort haben, wenn sie separat aufgelistet und gezählt werden sollen.

Wenn Sie dann komplexere URLs und Vergleiche zwischen Taxonomien durchführen müssen, empfehle ich dies als Lesematerial:

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

0
Tom J Nowell