Begrenzen Sie die Wörter im Post-Inhalt und fügen Sie mehr Link hinzu

Wie Sie im Code sehen können, zeigt die Routine den Post mit der id 266 . Jetzt will ich nur die Wörter beschränken, die im Post-Inhalt dieses Posts angezeigt werden. Nehmen wir an, ich möchte die Wörter auf 300 beschränken und dann einen Link zum Lesen hinzufügen.

Dies ist der Code, den ich bis jetzt bekommen habe:

  $post_id = 266; echo "
"; $queried_post = get_post($post_id); echo "
"; echo $queried_post->post_content; echo '
'; echo "
"; ?>

Solutions Collecting From Web of "Begrenzen Sie die Wörter im Post-Inhalt und fügen Sie mehr Link hinzu"

Ich habe immer das gleiche Problem mit Post-Extrakt, Post-Inhalt. Dazu gibt es verschiedene Hooks und functionen, wie @kaiser darauf hingewiesen hat. Aber manchmal machen sie nicht genau das, was ich will.

Hier ist meine Lösung, ich schreibe eine eigene function, die den Post-Inhalt aufnimmt und in eine bestimmte Anzahl von Wörtern schneidet:

 function wpse69204_excerpt( $num_words = 20, $ending = '...', $post_id = null ) { global $post; // Truncate post content $current_post = $post_id ? get_post( $post_id ) : $post; $excerpt = strip_shortcodes( $current_post->post_content ); $excerpt = wp_trim_words( $excerpt, $num_words, $ending ); // Read more link $excerpt .= 'Continue reading...'; return $excerpt; } 

Es gibt drei Filter, die den »more« -Link steuern, je nachdem, welche function / Template-Tag verwendet wird. Das Schlimme ist, dass sie sich gegenseitig abfangen. Die gute Sache ist, dass Sie die Ausgabe des Filters einfach ändern können, indem Sie current_filter() , um den Namen des aktuell angehängten Filters abzurufen und die Ausgabe zu ändern.

Dann haben wir das 'excerpt_length' Filter bekommen, um die Länge des Ausschnitts zu begrenzen. Dieses erlaubt uns nicht, einen Permalink hinzuzufügen, aber es hilft uns in Kombination mit den anderen Filtern. Siehe das 2. Plugin.

Das Permalink-Plugin

Dieses Plugin fügt den Permalink dem Inhalt oder Auszug hinzu – je nachdem, was angezeigt wird. Es setzt auch den excerpt_more um nichts auszugeben, so dass es die anderen Filter nicht stört.

 < ?php /** Plugin Name: (#69204) »kaiser« Adds a permalink to the excerpt & content */ /** * Alters the display of the "more" link * * @param string $permalink * @param string $text * @return string $html */ function wpse69204_more_link( $output ) { $html .= ' '; $html .= sprintf( '' ,get_permalink() ,get_the_ID() ); $html .= ''; // Override 'excerpt_more' if ( 'excerpt_more' === current_filter() ) return; // Strip the content for the `get_the_excerpt` filter. $output = wp_trim_words( $output, 300 ); // Append for the excerpt if ( 'get_the_excerpt' === current_filter() ) return $output.$html; // The permalink for the `the_content_more_link`-filter. return $html; } # "More" link for the content add_filter( 'the_content_more_link', 'wpse69204_more_link' ); add_filter( 'get_the_excerpt', 'wpse69204_more_link' ); add_filter( 'excerpt_more', 'wpse69204_more_link' ); 

Der Auszug mehr Länge Plugin

Wenn Sie nur die Länge des Ausschnitts ändern möchten, können Sie eine viel einfachere Filtereinrichtung verwenden. Das folgende Plugin macht einen sehr guten Job. Es reduziert den Inhalt (wir sind in der Schleife und haben Postdaten für den Zugriff) auf 300 Wörter. Im nächsten Schritt zählt es die Buchstaben jedes einzelnen Wortes. Dann gibt es einfach diese (dynamisch zugewiesene) Nummer zurück.

 < ?php /** Plugin Name: (#69204) »kaiser« Limit excerpt length by word count */ function wpse69204_excerpt_length( $length ) { $to_count = array_splice( get_the_content(), 300 ); $i = 0; foreach ( $to_count as $word ) { $i += strlen( $word ); } return $i; } add_filter( 'excerpt_length', 'wpse69204_excerpt_length' ); 

Anmerkungen

  1. Beide Plugins sind »Zero Configuration«. Einfach hochladen, aktivieren, fertig.
  2. Sie müssen the_content() oder the_excerpt() in Ihrem the_excerpt() verwenden, um diese Plugins zu verwenden.