wake-up-neo.com

Kürzen Sie die ersten beiden Wörter des Ausschnitts

Ich ziehe gerade den Post-Auszug ein, aber am Anfang stehen 2 Wörter, die ich lieber nicht an dieser Stelle hätte, da es bereits einen Titel gibt.

Ich habe vorher wp_trim verwendet, aber dies nimmt nur Wörter vom Ende, gibt es eine Möglichkeit, dies für die ersten 2 Wörter zu tun. Diese Wörter sind immer gleich, wenn das hilft? Ich bin nicht sicher, ob ich den Auszug als String bekommen habe, dann durch nichts ersetzen oder ob wp_trim dies kann.

<?php $tagname = get_the_title (); ?>
<?php

$original_query = $wp_query;
$wp_query = null;
$args=array('posts_per_page'=>1, 
    'orderby' => 'Rand',
    'tag' => sluggify( $tagname));
$wp_query = new WP_Query( $args );
if ( have_posts() ) :
    while (have_posts()) : the_post();
        echo '<h2 class="entry-title">';
        echo 'CASE STUDY';
        echo '</h2>';
        echo '<span>';
        the_post_thumbnail();
        echo '</span>';
        echo '<strong>';
        the_title();
        echo '</strong>';
        echo '<p>';
        the_excerpt();
        echo '</p>';
    endwhile;
endif;
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();?>

Geänderter Code von der vorgeschlagenen Antwort von @RRikesh:

<?php $tagname = get_the_title (); ?>
<?php

$original_query = $wp_query;
$wp_query = null;
$args=array('posts_per_page'=>1, 
    'orderby' => 'Rand',
    'tag' => sluggify( $tagname));
$wp_query = new WP_Query( $args );
if ( have_posts() ) :
    while (have_posts()) : the_post();
    $str = get_the_excerpt();

        echo '<h2 class="entry-title">';
        echo 'CASE STUDY';
        echo '</h2>';
        echo '<span>';
        the_post_thumbnail();
        echo '</span>';
        echo '<strong>';
        the_title();
        echo '</strong>';
        echo '<p>';
        echo ltrim($str, "INSTRUCTION SYNOPSIS"); // Output: This is another Hello World.
        echo '</p>';
    endwhile;
endif;
$wp_query = null;
$wp_query = $original_query;
wp_reset_postdata();?>
2
Ben H

Ich habe substr verwendet, um die ersten 21 Zeichen am Ende aus der Zeichenfolge zu entfernen. Dies war konsequenter.

$str = get_the_excerpt();
$str2 = substr($str, 21);
echo str2;
1
Ben H

Eine zuverlässigere Möglichkeit wäre, den Auszug zu filtern und die Zeichenfolge in ein Array zu zerlegen, die ersten beiden Schlüssel/Wert-Paare aus dem Array zu entfernen und dann die Zeichenfolge zurückzugeben

add_filter( 'wp_trim_excerpt', function ( $text )
{
    // Make sure we have a text
    if ( !$text )
        return $text;

    $text               = ltrim( $text );
    $text_as_array      = explode( ' ', $text );

    // Make sure we have at least X amount of words as an array
    if ( 10 > count( $text_as_array ) )
        return $text;

    $text_array_to_keep = array_slice( $text_as_array, 2 );
    $text_as_string     = implode( ' ', $text_array_to_keep );
    $text               = $text_as_string;

    return $text;
}):
3
Pieter Goosen

preg_replace zur One-Call-Rettung. /\w+/ stimmt mit Wörtern überein, während das dritte Argument von preg_replace() die Anzahl der Übereinstimmungen angibt. Da Sie sie entfernen möchten, übergeben wir einfach eine leere Zeichenfolge als Ersatz.

$str = 'These are some words. But the first two will not remain.';

// pattern, replacement, string, limit

echo preg_replace( '/\w+/', '', $str, 2 );

// output: some words. But the first 2 will not remain.

Eine Alternative ist die Verwendung von substr mit strpos .

// reduce the extra whitespace

$str = trim( "   This is some text and stuff.  " );

// find the second space and pull everything after

echo trim( substr( $str, strpos( $str, ' ', strpos( $str, ' ' ) + 1 ) ) );

// output: some text and stuff.
2
jgraup