get_extended

Разделяет контент на 2 части до тега <!--more--> и после него. Возвращает массив с полученными частями.

Хуков нет.

Возвращает

Массив с данными:

$parts = get_extended( $post_content );
$post_content(строка) (обязательный)
Контент поста, который нужно разделить.

Примеры

#1 Выведем цитату из последних постов

Если вам нужно вывести последние записи на блоге, но вывести нужно только часть текста до тега <!--more-->, используйте такой код:

<ul>
	<?php
	global $post;

	$myposts = get_posts( array( 'numberposts'=>5 ) );

	foreach( $myposts as $post ){
		setup_postdata( $post );  
		$parts = get_extended( $post->post_content ); ?>
		<li>
		   <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
		   </br>
		   <?php echo $parts['main']; // часть до тега more ?>   
		</li>
	<?php
	}
	wp_reset_postdata();
	?>
</ul>

#2 Выведем рекламу сразу после тега <!--more-->

Допустим нам нужно вывести рекламный блок после тега <!–more–>, на отдельной странице (файл single.php). Для этого заменим the_content() на такой код:

<?php
function get_extended( $post ) {
	//Match the new style more links.
	if ( preg_match('/<!--more(.*?)?-->/', $post, $matches) ) {
		list($main, $extended) = explode($matches[0], $post, 2);
		$more_text = $matches[1];
	} else {
		$main = $post;
		$extended = '';
		$more_text = '';
	}

	//  leading and trailing whitespace.
	$main = preg_replace('/^[s]*(.*)[s]*$/', '\1', $main);
	$extended = preg_replace('/^[s]*(.*)[s]*$/', '\1', $extended);
	$more_text = preg_replace('/^[s]*(.*)[s]*$/', '\1', $more_text);

	return array( 'main' => $main, 'extended' => $extended, 'more_text' => $more_text );
}