Recorte las 2 primeras palabras del exceprt

2

Actualmente estoy incorporando el extracto de la publicación, sin embargo, hay dos palabras al principio que preferiría no tener en este lugar en particular ya que hay un título ya.

He usado wp_trim anteriormente, pero esto solo quita las palabras del final, hay una manera de hacer esto para las primeras 2 palabras. Estas palabras son siempre las mismas si eso ayuda? No estoy seguro de si obtuve el extracto como una cadena y luego lo reemplazé por nada o si wp_trim puede hacer esto.

<?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();?>

Código modificado de la respuesta sugerida de @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();?>
    
pregunta Ben H 28.01.2016 - 11:45

3 respuestas

1

Usé substr para eliminar los primeros 21 caracteres de la cadena al final. Esto fue más consistente.

$str = get_the_excerpt();
$str2 = substr($str, 21);
echo str2;
    
respondido por el Ben H 28.01.2016 - 13:03
3

Una forma más confiable sería filtrar el extracto y explotar la cadena en una matriz, eliminar los dos primeros pares clave / valor de la matriz y luego devolver su cadena

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;
}):
    
respondido por el Pieter Goosen 28.01.2016 - 13:33
2

preg_replace para el rescate con una sola llamada. /\w+/ coincidirá con las palabras, mientras que el tercer argumento de preg_replace() especificará el número de partidos. Ya que desea eliminarlos, simplemente pasamos una cadena vacía como reemplazo.

$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.

Una alternativa es utilizar substr con 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.
    
respondido por el jgraup 28.01.2016 - 16:42

Lea otras preguntas en las etiquetas