Intereting Posts
Разработка мультисайтового плагина и wp_enqueue_script Форма контакта 7 от добавления абзаца и разрыва тегов в сообщениях электронной почты HTML Все постоянные ссылки идут на страницу продуктов с плагином WP E-Commerce? Показать информацию о продукте с правой стороны как добавить последнюю страницу в facebook последние сообщения в мой wordpress сайт Класс css_author_posts_link 4 столбца, упорядоченная по алфавиту с элементами, сгруппированными (и помеченными) их первой буквой Как добавить регистрационную форму по умолчанию на страницу шаблона? Есть ли способ рандомизировать и подключить фоновое изображение и заголовок? wp-cli не находит и устанавливает WordPress Тема моего плагина входа, как обновить поля Как получить текущий идентификатор сайта? (WPMU) Цепочка WordPress (многоузловой) / wp-admin / redirect (ERR_TOO_MANY_REDIRECTS) Кнопка «Настроить» в панели администратора для CSS Отправка сообщений WP во внешний API

Как ограничить символы, показанные на странице – get_content

У меня есть следующий php, чтобы отображать содержимое сообщения # 9 на моей «домашней странице» моего сайта, так что всякий раз, когда клиент обновляет страницу, это также отражается на домашней странице – вместо того, чтобы делать изменения дважды.

На данный момент отображается весь контент для публикации, мне нужно разбить его примерно на 100 слов …

Есть идеи?

<?php $id = 9; $post = get_page($id); $content = apply_filters('the_content', $post->post_content); echo $content; ?> 

WordPress имеет встроенную функцию force_balance_tags, которая, как мне кажется, мало изучена, но может быть полезна в таком сценарии.

получить контент и усечь его на произвольную длину

 $content = get_the_content(); $length = 1000; if(strlen($content) > $length) { $content = substr($content, 0, $length); } 

Теперь примените функцию force_balance_tags, чтобы сбалансировать любые теги html, которые были запущены в контенте, но не закончились из-за ограничения длины строки.

 echo force_balance_tags($content); 

Надеюсь, поможет.

РЕДАКТИРОВАТЬ:

На странице документации WordPress

 This function is used in the short post excerpt list, to prevent unmatched elements. For example, it makes <div><b>This is an excerpt. <!--more--> and this is more text... </b></div> not break, when the html after the more tag is cut off. 

Для выдержки вы можете использовать эту функцию, но для контента это создаст проблемы с html, поэтому вам придется самим справиться с этим

 function limit_words($phrase, $len) { $len = (int) $len; if (str_word_count($phrase) > $len) { $keys = array_keys(str_word_count($phrase, 2)); $phrase = substr($phrase, 0, $keys[$len]); } return $phrase; } 

Вышеизложенное относится к функциям.php. Затем вы можете использовать его в любом месте внутри ваших файлов шаблонов или даже в файле functions.php. Напр. в файле шаблона

 $excerpt = get_the_excerpt(); $new_excerpt = limit_words($excerpt, 10); // change 10 to the number of words echo $new_excerpt; 

Для этого WordPress имеет встроенные функции. Единственная проблема заключается в том, что он предполагает, что все ваши выдержки должны иметь одинаковую максимальную длину.

Если это предположение в порядке, все, что вам нужно сделать, это определить это максимальное значение.

Вы можете сделать это с помощью этого фильтра (поместите его в файл functions.php ):

 function my_excerpt_length( $length ) { return 40; // put new excerpt length in here } add_filter( 'excerpt_length', 'my_excerpt_length' ); 

Затем в вашем файле шаблона вам просто нужно сделать следующее:

 setup_postdata( $post ); the_excerpt(); 

Если вам нужно использовать разные длины выдержек в разных местах вашего сайта, вы можете использовать что-то вроде этого (добавьте эту функцию в functions.php):

 function my_trim_excerpt($text = '', $excerpt_length =0) { if ( !$excerpt_length ) $excerpt_length = apply_filters('excerpt_length', 55); $raw_excerpt = $text; $text = strip_shortcodes( $text ); $text = apply_filters('the_content', $text); $text = str_replace(']]>', ']]&gt;', $text); $excerpt_length = apply_filters('excerpt_length', 55); $excerpt_more = apply_filters('excerpt_more', ' ' . '[...]'); $text = wp_trim_words( $text, $excerpt_length, $excerpt_more ); return apply_filters('get_the_excerpt', apply_filters('wp_trim_excerpt', $text, $raw_excerpt)); } 

Затем используйте его следующим образом:

 echo apply_filters('the_excerpt', my_trim_excerpt($post->post_content, 40)); // 40 is the excerpt length 

dont больше усложняют это

если вы используете [get_the_content][1] в цикле, вы можете использовать [wp_trim_words][2] .

 $id = 9; $post = get_page($id); $content = $post->post_content ; echo wp_trim_words($content, 55, '<a href=""> Read More Link</a>');