Wie kann man erkennen, ob ein manueller Auszug in WordPress vorhanden ist?

Lesezeit: 2 Minuten

Benutzeravatar von user28240
Benutzer28240

Ich muss Ausschnitte unterschiedlicher Länge zeigen, also verwende ich

function custom_excerpt($length) {    
get_the_content();
... clean up and trim
return $excerpt;
}

Ich möchte jedoch feststellen, ob ein manueller Auszug eingegeben wurde, um diesen anstelle des benutzerdefinierten zu verwenden. Gibt es eine Möglichkeit, dies zu tun?

Ich habe es mit versucht

$wp_excerpt = get_the_excerpt();

Aber das gibt den manuellen Auszug zurück, und wenn der manuelle Auszug leer ist, wird automatisch ein Auszug von 55 Zeichen generiert, was nicht hilft, weil er immer “true” sein wird (kann nicht prüfen, ob er leer ist).

Der Grund für diese Herangehensweise ist, dass ich mehrere Auszüge auf einer einzigen Seite habe (unterschiedliche Längen) und wenn die benötigte Länge länger als der WordPress-Auszug (55) ist, möchte ich meinen Auszug zeigen, wenn nicht Es wurde ein Handbuchauszug geschrieben, in diesem Fall möchte ich das zeigen.

Es wäre perfekt, wenn ich es einfach könnte

if ( manual_excerpt() == true ) {
}

Hullens Benutzeravatar
Hullen

Sie müssen nur die WordPress-Standardfunktion excerp_length ersetzen, folgen Sie einfach dem obigen Code, dann können Sie diese benutzerdefinierte Funktion aufrufen und die Länge festlegen:

<?php
// custom excerpt length
function custom_excerpt_length( $length = 20 ) {
   return $length;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
?>   

ANTWORT AKTUALISIERT II

Verwendung innerhalb einer Funktion:

<?php
function custom_excerpt( $length = 55 ) {    
    if( $post->post_excerpt ) {
        $content = get_the_excerpt();
    } else {
        $content = get_the_content();
        $content = wp_trim_words( $content , $length );
    }
    return $excerpt;
}
?>

  • Ich habe mehrere Elemente auf einer einzelnen Seite, die unterschiedliche Längen des Auszugs benötigen. Würden dadurch nicht alle Auszüge die Länge der letzten “add_filter”-Ausführung haben?

    – Benutzer28240

    12. November 2013 um 17:14 Uhr

  • Das funktioniert auch, aber das Problem ist, dass, wenn ein Benutzer einen manuellen Auszug eingibt, dieser niemals verwendet wird, und das ist mein größtes Problem!

    – Benutzer28240

    12. November 2013 um 17:27 Uhr

  • Aber wenn Sie diesen Code in eine Funktion einfügen? Und die Länge durch einen Funktionsparam übergeben?

    – Hullen

    12. November 2013 um 17:31 Uhr

  • Nee, weil damit der manuelle Auszug überschrieben würde. Danke trotzdem versucht!

    – Benutzer28240

    12. November 2013 um 17:33 Uhr

  • Diese Funktion überprüft nun, ob der Benutzer einen Post-Auszug manuell eingefügt hat, und zeigt diesen an oder kürzt dann den Post-Inhalt. 😉

    – Hullen

    12. November 2013 um 18:06 Uhr

Überprüfen Sie, ob die post_excerpt Slot im Post-Objekt ist leer oder nicht:

global $post;

if( '' == $post->post_excerpt )
{
    // this post does NOT have a manual excerpt
}

Um dies in eine Funktion umzuwandeln:

function so19935351_has_manual_excerpt( $post )
{
    if( '' == $post->post_excerpt )
        return false;

    return true;
}

Dies ist eine alte Frage, aber ich habe danach gesucht, bin hier gelandet und habe die folgende Funktion in den Antworten nicht gesehen. Um zu wissen, ob ein Beitrag einen benutzerdefinierten Auszug hat, können Sie die verwenden hat_Auszug Funktion:

<?php has_excerpt( $id ); ?>

Wo $id ist die Post-ID. Wenn keine angegeben wird, wird die aktuelle Beitrags-ID verwendet.

1434730cookie-checkWie kann man erkennen, ob ein manueller Auszug in WordPress vorhanden ist?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy