Вставка DIV после 2 параграфов в Wordpress - PullRequest
0 голосов
/ 30 августа 2018

Я пытаюсь сделать так, чтобы мои посты вставляли цитату после 2 (или любого другого числа) абзацев. В случае с веб-сайтом, с которым я работаю, кавычки - это свое собственное поле, поэтому я не могу просто присвоить это тэгу blockquote. Таким образом, я собрал это решение:

    function insert_pullquote( $text ) {

    if ( is_singular('review') ) :

        $quote_text = get_template_part( 'pullquote' );
        $split_by = "\n\n";
        $insert_after = 2; //number of paragraphs

        // make array of paragraphs
        $paragraphs = explode( $split_by, $text);

        // if array elements are less than $insert_after set the insert point at the end
        $len = count( $paragraphs );
        if (  $len < $insert_after ) $insert_after = $len;

        // insert $ads_text into the array at the specified point
        array_splice( $paragraphs, $insert_after, 0, $quote_text );

        // loop through array and build string for output
        foreach( $paragraphs as $paragraph ) {
            $new_text .= $paragraph; 
        }

        return $new_text;

    endif;

    return $text;

}
    add_filter('the_content', 'insert_pullquote');

Итак, хорошая новость в том, что он отображает цитату так, как я хочу ( см. Здесь ), но он не делает этого после 2 абзацев. Я использую встроенную в Wordpress функцию get_template_part ('pullquote'); которая сама извлекает данные из поля с помощью echo (types_render_field ('pullquote')); Если я просто введу простой текст, он работает нормально. Что я делаю неправильно? Я немного похож на PHP, поэтому, пожалуйста, потерпите меня на очевидных ошибках. Спасибо!

1 Ответ

0 голосов
/ 30 августа 2018

Область действия $new_text находится внутри цикла.

Вам нужно

    $new_text="";    // declare out side loop
    foreach( $paragraphs as $paragraph ) {
        $new_text .= $paragraph; 
    }
    return $new_text;  // now is available here.

Вы также можете использовать

$new_text =implode($paragraphs);  // to match your explode :-)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...