• Über "get_post_status" ist es ja möglich, den Post-Status eines Beitrages auszugeben.

    Auf diese Weise werden aber die englischen Bezeichnungen (publish, draft, auto-draft etc.) angezeigt.

    Wie ist es möglich, diese Ausgabe "einzudeutschen"?

    Vielen Dank

    Einmal editiert, zuletzt von Geronim0 (30. Dezember 2016 um 15:02)

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Vielen Dank, helix.

    Dieses Exempel hatte ich auch schon gefunden.

    Es ist ein gekauftes Theme und der Code sieht so aus:

    PHP
    echo '<div class="my-post-status status-'.get_post_status().'">'.esc_html__('Status: ', 'theme').'<span>'.get_post_status().'</span></div>'

    Dann müsste man aber jedes mal, wenn man es in einem Template einsetzt, die komplette Abfrage machen?


    PHP
    if ( get_post_status () == 'publish' ) {
            echo 'veröffentlicht';
    if ( get_post_status () == 'draft' ) {
            echo 'Entwurf';

    usw.

    Ist es nicht möglich, anstelle des get_post_status() eine eigene Funktion zu definieren, mit der man das get_post_status() einfach ersetzt oder dies zentral", über die function.php (und z.B. add_filter), zu "übersetzen"?

    Ich bin in php leider nicht firm und vielleicht denke ich ja auch zu kompliziert und in die falsche Richtung ...

  • get_post_status_object() ist die Lösung.

    Code
    $post_status = get_post_status();
    $post_status_obj = get_post_status_object( $post_status );
    if ( !empty( $post_status_obj ) ) {
        echo $post_status_obj->label; // "eingedeutscht"
    } else {
        echo $post_status; // fallback, sollte nicht vorkommen
    }


    Wahlweise kann man das natürlich auch in [FONT=courier new]functions.php[/FONT] des Themes auslagern, z.B.

    Code
    function my_get_post_status() {
        $post_status = get_post_status();
        $post_status_obj = get_post_status_object( $post_status );
        if ( !empty( $post_status_obj ) ) {
            return $post_status_obj->label; // "eingedeutscht"
        } else {
            return $post_status; // fallback, sollte nicht vorkommen
        }
    }


    und dann im Theme bei der Ausgabe an der entspr. Stelle aufrufen

    PHP
    echo '<div class="my-post-status status-'.get_post_status().'">'.esc_html__('Status: ', 'theme').'<span>'.my_get_post_status().'</span></div>'

    Einmal editiert, zuletzt von b3317133 (31. Dezember 2016 um 13:46)

  • Ich habe es über function.php gelöst und es klappt wunderbar.

    Ich habe mir tagelang den Wolf gesucht und erfolglos rumprobiert. Wenn man weiß wie, kann es so einfach sein.

    Mit einem Problem weniger ins neue Jahr.

    Vielen Dank für die schnelle Hilfe!

    Ich wünsche einen guten Rutsch!

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!