Ein einfaches Plugin für WordPress selbst erstellen – Den Beitragszähler mit wp_count_posts

In diesem Artikel erstellen wir ein ganz simples Plugin für WordPress. Mit diesem Plugin wollen wir die bereits erstellten Beiträge unserer WordPress Seite zählen. Hierzu erstellen wir zuerst mal eine Datei mit dem Namen beitragszaehler.php und öffnen diese Datei mit einem Editor.

Zuerst müssen wir WordPress mitteilen, dass es sich bei unserer Datei um ein Plugin handelt und fügen folgende Informationen hinzu. Den Pluginnamen und die Plugin URL, eine Pluginbeschreibung, die Version des Plugins, den Authornamen und die Authorenseite. Wie so etwas aussehen muss entnehmen wir dem WordPress Codex https://codex.wordpress.org/File_Header#Plugin_File_Header_Example. An diesem Beispiel orientieren wir uns.

<?php
/*
Plugin Name: Beitragszähler
Plugin URI: https://zoechbauer.name/ein-einfaches-plugin-fuer-wordpress-selbst-erstellen-den-beitragszaehler-mit-wp-count-posts/
Description: Zählt alle Beiträge
Version: 1.2.3
Author: Zöchbauer Manfred
Author URI: https://zoechbauer.name/
*/
?>

Der erste Schritt wäre geschafft. Wenn wir diese Datei nun speichern und in das WordPress Pluginverzeichnis kopieren, dann könnten wir dieses Plugin ohne Funktion bereits aktivieren.

Wie wir sehen ist das Plugin mit dem Namen Beitragszähler bereits vorhanden und aktiviert, allerdings noch ohne Funktion. Das müssen wir natürlich noch ändern. Wir nutzen hierzu für diesen Zweck die WordPress Funktion wp_count_posts().

Was können wir mit wp_count_posts() zählen?

  • veröffentlichte Beiträge mit wp_count_posts()->publish
  • die Enfwürfe mit wp_count_posts()->draft
  • für die Zukunft geplante Beiträge mit wp_count_posts()->future
  • Beiträge die noch freigegeben werden müssen mit wp_count_posts()->pending
  • Private Beiträge mit wp_count_posts()->private
  • und gelöschte Beiträge mit wp_count_posts()->trash

Auch Seiten können wir zählen. In solch einen Fall müssen wir in der Klammer page ergänzen – wp_count_posts( 'page' ).

Das ganze wäre nicht komplett, wenn man auch nicht noch die benutzerdefinierten Posttypen – Custom Post Types zählen könnte – wp_count_posts( 'custom_post_type_name' ).

Das machen wir uns jetzt im Plugin zu nutze und fügen folgenden Code hinzu.

function zoechbauer_beitragszaehler() {
    // Zählen der veröffentlichten Beiträge
    $postpub = wp_count_posts()->publish;
    // Zählen der entworfenen Beiträge
    $postdra = wp_count_posts()->draft;

    // Wir können auch veröffentlichte und entworfene Zusammenzählen
    $postges = $postpub + $postdra;

    // Zählen der veröffentlichten Seiten
    $pagepub = wp_count_posts( 'page' )->publish;

    // Die Ausgabe
    echo "Bisher wurden $postpub Beiträge veröffentlicht, $postdra sind im Entwurf.
        Gesamt = $postges.
        $pagepub Seiten wurden bisher veröffentlicht.";
}

Je nachdem was wir alles zählen wollen, müssen wir den Code dementsprechend anpassen. Aber das Prinzip von wp_count_posts() sollte klar sein. Wenn wir uns im Codex von WordPress umsehen (https://codex.wordpress.org/Writing_a_Plugin#Plugin_Files), so wird uns auch noch empfohlen, das direkte ausführen der PHP Datei zu verhindern. Für dieses Plugin wäre das zwar nicht so relevant, aber je nach Code gewinnt dies doch sehr an Bedeutung.

defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

Den Text No script kiddies please! können wir natürlich anpassen. Was bewirkt diese Zeile? Wenn die Datei beitragszaehler.php nun im Browser direkt anstatt innerhalb von WordPress aufgerufen wird, erhalten wir den Hinweis No script kiddies please! Ohne diese Zeile würde der PHP Code ausgeführt. In diesem Beispiel verwenden wir allerdings WordPress Funktionen, daher würde es bei einem direkten Aufruf der PHP Datei im Browser in Fehlermeldungen enden.

Das komplette Plugin nochmal im Ãœberblick.

<?php
/*
Plugin Name: Beitragszähler
Plugin URI: https://zoechbauer.name/ein-einfaches-plugin-fuer-wordpress-selbst-erstellen-den-beitragszaehler-mit-wp-count-posts/Description: Zählt alle Beiträge
Version: 1.2.3
Author: Zöchbauer Manfred
Author URI: https://zoechbauer.name/
*/

// Meldung bei Direktzugriff im Browser
defined( 'ABSPATH' ) or die( 'No script kiddies please!' );

// Die Pluginfunktion
function zoechbauer_beitragszaehler() {
    // Zählen der veröffentlichten Beiträge
    $postpub = wp_count_posts()->publish;
    // Zählen der entworfenen Beiträge
    $postdra = wp_count_posts()->draft;

    // Wir können auch veröffentlichte und entworfene Zusammenzählen
    $postges = $postpub + $postdra;

    // Zählen der veröffentlichten Seiten
    $pagepub = wp_count_posts( 'page' )->publish;

    // Die Ausgabe
    echo "Bisher wurden $postpub Beiträge veröffentlicht, $postdra sind im Entwurf.
    Gesamt = $postges.
    $pagepub Seiten wurden bisher veröffentlicht.";
}
?>

Das Plugin alleine genügt in diesem Fall leider noch nicht für die Anzeige unserer Zählung. Dazu müssen mir in unserem Theme an der gewünschten Stelle noch folgenden Code hinzufügen.

<?php zoechbauer_beitragszaehler(); ?>

Wenn man allerdings das Theme durch ein neues ersetzt, ob durch eine Update des Themes oder indem man ein anderes verwendet, so müsste dieser Code allerdings wieder neu im Theme hinzugefügt werden. Mittels sogenannten Child-Themes wäre zumindest das Thema Update aus der Welt geschafft.




Bitte beachten Sie, dass dieser Beitrag bereits vor über einem Jahr geschrieben wurde und unter umständen nicht mehr aktuell ist.