Я долгое время боролся с этим … Я хочу ограничить длину статьи до 100 символов и после 100 символов. limit, добавьте в конец «…», связанный с одним сообщением (например, wordpress <!--more-->
). Но я не могу использовать the_excerpt
потому что он удаляет форматирование (например, теги <b>
, <a>
). Может ли кто-нибудь помочь мне с этим?
function get_custom_excerpt( $content, $link ){ $content = some_function_to_handle_html_tag(substr($content, 0, 100)); // EDIT: need to be customized with a regex for proper output $content .= ' <a href="'.$link.'"> more... </a>'; return $content; } function some_function_to_handle_html_tag(){ //a regex to check last occurance of html opening tag //append respective closing tag or strip the tag if broken eg '<' or '<something' } //for global $post echo get_custom_excerpt($post->post_content, get_permalink($post->ID)); //print the custom excerpt of 100 characters
или
//when in loop echo get_custom_excerpt(get_the_content(), get_permalink(get_the_ID())); //print the custom excerpt of 100 characters
РЕДАКТИРОВАТЬ:
Это может быть неустойчивым, если какой-либо html-тэг был открыт в первом 100 символе, но не закрыт. Я попытался найти правильное решение (показать содержимое без удаления html), но ничего не нашел. Но у меня есть идея, которая может помочь –
1) Вы можете использовать регулярное выражение, которое будет проверять последнее заполнение строки, которая начинается с <
и заканчивается на >
, тогда вам нужно будет добавить соответствующий закрывающий тег в конце. Итак, скажем, например, если в теге <span>
, </span>
должен быть добавлен конец, чтобы предотвратить разбиение html-макета.
2) Если происходит какое-либо событие вроде <
или <something
, то это должно быть удалено.
Затем приведенный выше код должен работать в большинстве случаев.