WordPress обрезать текст и заменить

palarmaz
На сайте с 05.04.2010
Offline
125
868

Буду рад за помощь. У меня новости выглядят следующим образом:

<span id="zm">Оглавление</span>
<div id="sod">

<ul>
<li><a href="#1">Разновидности фруктов</a></li>
<li><a href="#2">Разновидности овощей</a></li>
<ul>
</div>
<div id="content">
Все овощи разделяются на несколько типов. Это может быть
</div>

В category.php для вывода превью использую обрезку статьи, этот код:

	/*    Код вытягивает из полной новости текст, и обрезает его на N-ое количество символов  */	
function shorten_text( $iChars = 22, $szTail = "...", $bPrint = true )
{
global $post;

$szText = strip_tags( trim( $post->post_content ) );

$szText = preg_replace('(<span id="zm">.*?</span>)', '', $szText); /* Вырезать теги */

$szText = substr( $szText, 0, $iChars );
$szText = substr( $szText, 0, strrpos( $szText , ' ' ) ) . $szTail;
apply_filters('the_excerpt', $szText);
if ( $bPrint == true )

echo $szText;


else return $szText;

}

В категории Получается так:

Оглавление Разновидности фруктов Разновидности овощей Все овощи разделяются на несколько типов. Это может быть

Как я понял, сначала текст из новости очищается от тегов, а затем выводится. Т.е сначала нужно вытянуть код новости, вырезать то, что внутри тегов <span id="zm"><div id="sod">, а затем уже обрезать по количеству символов.

дани мапов
На сайте с 06.09.2012
Offline
204
#1

А где вопрос?

Написание и доработка скриптов (PHP, MySQL, JavaScript, jQuery) (/ru/forum/811046)
palarmaz
На сайте с 05.04.2010
Offline
125
#2
дани мапов:
А где вопрос?

Я думал, что понятно расписал)).

На данный момент такая очередность:

1) код вытягивает статью.

2) удаляет ВСЕ теги из нее. Берет заданное количество первых символов.

3) preg_replace - ничего не находит, потому как во втором шаге все почищено.

Нужно поменять порядок событий:

1) Получить код статьи с тегами

2) preg_replace - удалить теги <span></span>

3) удалить ВСЕ теги после 2 шага и заданное количество символов.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий