it-swarm.com.de

Zählen der Anzahl der Beiträge in einer Kategorie und ihren Unterkategorien und Anzeigen des Ergebnisses mithilfe eines Shortcodes

Ich versuche einen Shortcode zu erstellen, um die Anzahl der Beiträge in einer Kategorie anzuzeigen. Ich habe dies erfolgreich mit diesem Code durchgeführt:

// Add Shortcode to show posts count inside a category
function add_count_of_posts_in_category() {
$term = get_term( 7, 'category' ); 
$count = $term->count;
echo $count;
}
add_shortcode( 'show-posts-count', 'add_count_of_posts_in_category' );

Dies bedeutet jedoch, dass ich die ID der Kategorie angeben muss, damit der Shortcode funktioniert. Das bedeutet, dass ich einen Shortcode pro Kategorie erstellen muss, was nutzlos ist.

Ich versuche, eine Möglichkeit zu finden, das Kategorie-ID-Teil mit einer Variablen zu ändern, sodass ich den folgenden Shortcode verwenden kann: [show-posts-count="cars"], um die Anzahl der Posts in der Kategorie "Autos" anzuzeigen. Ich kann keinen Weg finden, dies zu tun.

Deine Hilfe ist sehr Willkommen.

EDIT: 29/09/2016 Nachdem der Code funktioniert hat, versuche ich, die Funktion zu erweitern, um auch die Posts in der untergeordneten Kategorie zu zählen.

Wenn die Hauptkategorie also keine Beiträge, sondern 2 Unterkategorien hat, hat jede Beiträge. Wenn ich die Kurzwahl für die Hauptkategorie verwende, ist die angezeigte Zahl die Summe aller Beiträge in der Hauptkategorie (falls vorhanden) in Außerdem die Anzahl der Beiträge in den Unterkategorien und den Unter-Unterkategorien

Ich habe versucht, get_term_children( $term, $taxonomy ); zu verwenden, wusste aber nicht, wie ich die Anzahl der Postings von Unterkategorien ermitteln und diese dann addieren sollte.

1
Atef Wagih

Der Shortcode

// Add Shortcode to show posts count inside a category
function category_post_count( $atts ) {

    $atts = shortcode_atts( array(
        'category' => null
    ), $atts );

    // get the category by slug.
    $term = get_term_by( 'slug', $atts['category'], 'category');

    return ( isset( $term->count ) ) ? $term->count : 0;
}
add_shortcode( 'category_post_count', 'category_post_count' );

Verwendungszweck

[category_post_count category="category_slug_or_name"]

Wenn Sie die Zählung nach Namen erhalten möchten, ändern Sie dies nicht

$term = get_term_by( 'slug', $atts['category'], 'category');

dazu:

$term = get_term_by( 'name', $atts['category'], 'category');
2
Ahmed Fouad

Um Posts in Unterkategorien zusätzlich zu der angegebenen Kategorie zu zählen, besteht eine Möglichkeit darin, Posts mit der Option cat abzufragen und die Ergebnisse zu zählen. Die Option cat fragt standardmäßig Beiträge in untergeordneten Kategorien ab.

add_shortcode('category_post_count', function ($atts, $content) {
    $atts = shortcode_atts([
        'category' => 0
    ], $atts);
    $cat_id = is_numeric($atts['category']) ?
        intval($atts['category']) :
        get_category_by_slug($atts['category'])->term_id;
    return count(get_posts([
        'nopaging' => true,
        'fields' => 'ids',
        'cat' => $cat_id
    ]));
});

Es gibt Beispiele für das Abfragen der untergeordneten Kategorien und das Aufsummieren der Felder count. Dies kann jedoch zu ungültigen Ergebnissen führen, wenn ein Beitrag zu mehr als einer der übereinstimmenden Kategorien gehört.

0
Joe