web-dev-qa-db-ger.com

Anpassen von get_the_excerpt () an eine bestimmte Länge und Ausgabe von "Read More".

Ich kostümiere eine Vorlage. Es gibt eine Liste, die die Einführung aus den ersten 1-2 Absätzen aufgreift (alle Artikel aus einer Kategorie). Wenn ich den Auszug auf 295 Wörter setze, ergreift die Liste manchmal zusätzliche Wörter aus dem nächsten Absatz. Ich möchte ein Read More-Tag hinzufügen, um es zu stoppen. Kann mir jemand dabei helfen?

<div id="all-div-cabrand-content-stories">
    <div class="kids-families-con-cabrand-stories">
        <?php echo get_the_post_thumbnail($page->ID, 'thubmnailstorysmall'); ?>
    </div>
    <div class="kids-con-cabrand-new-stories">
        <span>
            <?php print substr(get_the_excerpt(),wp_trim_excerpt(),295); ?>
            <i><a style="color:#1975D1;float:Right;" class="title" href="<?php the_permalink() ?>" rel="bookmark">Click for Story & Video</a></i>
            <br/>
        </span>
    </div>
</div>
3
Chrisq

Sie können die ersten ein oder zwei Absätze mit einem regulären Ausdruck abrufen (regexp)

function custom_excerpt( $content = '' ){

    if( empty( $content ) )
        return $content;

    $result = '';
    $matches = array();

    // grab all paragraphs from $content
    preg_match_all( '#<\s*p[^>]*>(.*?)<\s*/\s*p>#ui', $content, $matches );

    if( ! empty( $matches ) ){

        // add the first paragraph
        $result = $matches[0][0];

        // add the swecond paragraph if available
        if( isset( $matches[0][1] ) )
            $result .= $matches[0][1];

        // set the excerpt length
        add_filter( 'excerpt_length', 'custom_excerpt_length' );

        // create the custom excerpt
        $result = custom_trim_excerpt( $result );

    }

    return $result;

}

function custom_excerpt_length(){

    return 295;

 }

function custom_trim_excerpt( $text = '' ){

    $text = strip_shortcodes( $text );

    $text = apply_filters('the_content', $text);
    $text = str_replace(']]>', ']]&gt;', $text);
    $excerpt_length = apply_filters('excerpt_length', 55);
    $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]');
    $text = wp_trim_words( $text, $excerpt_length, $excerpt_more );

    return $text;
}

Rufen Sie die Funktion mit auf

<?php print custom_excerpt( get_the_content( 'Read More' ) ); ?>

Dies ist etwas knifflig, da Sie wp_trim_excerpt() keinen Text übergeben können. wp_trim_excerpt() gibt einfach den Text zurück, wenn einer angegeben ist. Sie müssen die Funktion ein wenig kopieren und anpassen.

2
Ralf912

Um eine bestimmte Länge zu erhalten, können Sie Folgendes verwenden: wp_trim_words function. Es hat 3 Parameter.

  1. Zu trimmender Text. Beispiel: get_the_content()
  2. Anzahl der Wörter. Beispiel: 295
  3. Was soll nach dem Ende des Textes angehängt werden? Beispiel: '' Dies bedeutet null.

Benutze das:

<span>
    <?php echo wp_trim_words( get_the_content(), 295, '' ); ?>
    <i><a style="color:#1975D1;float:Right;" class="title" href="<?php
        the_permalink() ?>" rel="bookmark">Click for Story & Video</a></i>
    <br/>
</span>
2
iBrAhiM

Sie können diese Funktion verwenden:

function get_excerpt_trim($num_words='20', $more='...'){
    $excerpt = get_the_excerpt();
    $excerpt = wp_trim_words( $excerpt, $num_words , $more );
    return $excerpt;
}

https://codex.wordpress.org/Function_Reference/wp_trim_words

1
ind88

Um zu bekommen, was Sie wollen, müssen Sie zwei Dinge tun.

1) Erstellen Sie eine benutzerdefinierte Auszugslänge (in Worten, nicht in Zeichen), die Sie am besten erreichen, indem Sie diese Antwort befolgen.

2) Rufen Sie einfach wp_trim_excerpt () auf und binden Sie es nicht in substr ein

Ihre obige Codezeile entspricht nicht Ihren Erwartungen. Ich glaube, es gibt die ersten 295 Zeichen des Auszugs zurück, aber ich bin nicht ganz sicher, was die Funktion php subtr () tun wird, wenn Sie eine Zeichenfolge als zweites Argument übergeben, wenn eine Ganzzahl erwartet wird .

0
Freddy