wake-up-neo.net

Warum wird in meiner benutzerdefinierten Taxonomie die Gesamtzahl aller Beitragstypen angezeigt?

Ich habe eine benutzerdefinierte Taxonomie-Saison erstellt. Ich habe 3 benutzerdefinierte Beitragstypen, für die ich diese Taxonomie verwenden möchte. Diese sind

  • Rennen
  • Galerien
  • Mitbewerber

Wenn ich jetzt die Gesamtsummen im Taxonomie-Bildschirm ansehe (d. H. Die URL im WP-Administrator zeigt Folgendes an: edit-tags.php? Taxonomy = season & post_type = race)

Die Gesamtsummen zeigen die kombinierte Anzahl von Beiträgen in dieser Kategorie über alle meine benutzerdefinierten Beiträge hinweg und nicht nur die Anzahl der Rennbeiträge, die in diese Kategorie fallen.

Warum ist das? und wie bekomme ich die Taxonomie, um nur diesen benutzerdefinierten Beitragstyp anzuzeigen?

enter image description here

5
Ash

Derzeit gibt es ein Trac-Ticket für die Tatsache, dass Taxonomie-Zählungen global sind (einschließlich aller Beitragstypen). Zugehöriges Trac-Ticket .

Um dies zu beheben, können Sie die Spalte entfernen und Ihre eigene mit dem Filter manage_edit-{$taxonomy}_columns hinzufügen:

add_filter('manage_edit-season_columns','my_season_columns');
function my_season_columns($columns){
    unset($columns['posts']);
    $columns['cpt_count'] = 'Races';

    return $columns;
}

Anschließend teilen Sie WordPress mit, wie diese Spalte mit dem Filter manage_{$taxonomy}_custom_column gefüllt werden soll. Dazu überprüfen Sie, ob wir uns in der Spalte 'cpt_count' befinden, und geben zurück, was immer die Anzahl ist. Dazu benötigen Sie eine benutzerdefinierte Funktion.

add_filter('manage_season_custom_column','my_season_alter_count',10,3);
function my_season_alter_count($value, $column_name, $id ){
    if( 'cpt_count' == $column_name )
        return wpse50755_get_term_post_count_by_type($id,'season','race');

    return $value;
}

Zuletzt definieren Sie die benutzerdefinierte Funktion wpse50755_get_term_post_count_by_type. Dies wurde von dieser Antwort genommen .

function wpse50755_get_term_post_count_by_type($term,$taxonomy,$type){

  $args = array( 
    'fields' =>'ids',
    'numberposts' => -1,
    'post_type' => $type, 
     'tax_query' => array(
        array(
            'taxonomy' => 'event-category',
            'field' => 'id',
            'terms' => intval($term)
        )
      )
   );
   $ps = get_posts( $args );

   if (count($ps) > 0){
       return count($ps);
   }else{
       return 0;
   }
 }

Dies ist nicht getestet, sollte aber konzeptionell funktionieren.

Sie müssen ein wenig mehr Arbeit leisten, um die Spalte sortierbar zu machen, da Sie herausfinden müssen, wie Sie WordPress anweisen, die Begriffe in der Reihenfolge der Anzahl (posttypspezifisch) zu sortieren.

5
Stephen Harris