Intereting Posts
Какая ссылка на мою страницу «Архив» по ​​умолчанию? Диспетчер изображений WordPress Media – создание множества и множество нечетных изображений Получить список всех пользовательских идентификаторов tanonomy Шрифты Enque Typekit – не найдены Я хочу отображать автора gravatar на сообщениях. Как это сделать? Идеальное место для хранения постоянных объектов PHP Установить значение по умолчанию для переключателя в пользовательском мета-окне WP Alchemy? Добавить класс в кнопку «Ответить» в области комментариев Как вы получаете идентификатор текущего элемента меню? Принуждение WordPress к работе по-разному Как я могу упорядочить папку Uploads Slug (или ID, или FileType, или Author)? Как удалить раздел комментариев только с страницы, а не с сообщений? Динамически отправить pdf, прикрепленный к сообщению с контактной формой 7 Как изменить структуру «permalink» в теме «WordPress Thesis»? манипулировать шорткодом плагинов

Добавить ссылку «Продолжить чтение», если длина сообщения больше трех строк текста?

Я довольно новичок в кодировании WordPress, медведь со мной.

У меня есть раздел на моей домашней странице, в котором перечислены 2 последних сообщения в блоге.

Если текст проходит через три строки, мой дизайн становится испорченным. Поэтому мне было интересно, существует ли встроенная функция, которая позволяет мне автоматически добавлять «Продолжить чтение» и разрешать пользователю щелкнуть эту ссылку, чтобы привести их в полный блог?

Например, это то, чего я НЕ хочу:

Плохо

Это то, чего я хочу, я сделал дизайн в Photoshop, и это то, что я хотел бы сделать, если сообщения будут длиннее трех строк текста.

Хорошо

Спасибо, я попробую уточнить что-нибудь, если понадобится!

Solutions Collecting From Web of "Добавить ссылку «Продолжить чтение», если длина сообщения больше трех строк текста?"

Вместо того, чтобы делать строки, я бы попытался найти символы или слова. В приведенном ниже примере используются символы.

Не верьте мне на слово, поскольку он не был протестирован.

$character == 40; // number of characters to compare if(mb_strlen( get_the_content() < $character){ the_content(); }else{ the_content('Continue Reading...') } 

Альтернативно по количеству слов.

 $words == 20; // number of characters to compare if(str_word_count(get_the_content(),0) < $words){ the_content(); }else{ the_content('Continue Reading...') } 

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

В WordPress то, что вы хотите, выполняется с помощью функции the_excerpt которую я ставлю, используется в вашей теме. (Не забудьте прочитать предоставленную ссылку, полна полезной информации для вас)

Как сказано, строки не являются допустимым модулем для PHP, на самом деле the_excerpt использует количество слов как ограничение. По умолчанию он ограничен 55 словами.

Как изменить: первый метод использует фильтр, например:

 add_filter( 'excerpt_length', function() { return 20; }, 99 ); 

Таким образом, «резюме» вашего сообщения, которое видно, будет считаться 20 словами.

Когда выдержка будет создана, вырезая определенное количество слов из почтового содержимого, [...] добавляется к выдержке.

Чтобы этого избежать, вы можете использовать другой фильтр:

 add_filter( 'excerpt_more', function() { return ''; }, 99 ); 

Таким образом, ничто не добавляется к обрезанному тексту. Если вы хотите добавить что-то, просто поставьте то, что хотите внутри '' в предыдущей функции.

Другой способ решить, где заканчиваться «резюме», – это вручную вставить выдержку в сообщениях при их создании:

ручная выдержка

Таким образом, вы можете точно решить, где заканчивается резюме.

Что касается длины отрывка, я думаю, что теперь вы можете контролировать его, теперь мы можем ответить на вторую часть вашего вопроса.

Более простой способ добавить «Продолжить чтение» – это просто добавить ссылку на сообщение, используя get_permalink(); поэтому, где в вашем коде есть the_excerpt() , замените на:

 the_excerpt(); printf('<a href="%s">%s</a>', get_permalink(), 'Continue Reading...'); 

Обратите внимание, что это всегда добавляет ссылку на одно сообщение, даже если пост короче длины выдержки.

Чтобы добавить ссылку только в том случае, если содержание сообщения больше, чем выдержка, вы можете оставить шаблон, используя только the_excerpt(); и используйте предыдущий объясненный фильтр «excerpt_more», где вместо того, чтобы возвращать пустую строку, вы возвращаете ссылку для публикации:

 add_filter( 'excerpt_more', function() { return ' <a class="read-more" href="'. get_permalink( get_the_ID() ) . '">Continue Reading...</a>'; }); 

Пожалуйста, обратите внимание:

В этом ответе я предположил, что ваш шаблон использует the_excerpt чтобы отображать резюме резюме, это наиболее распространенный способ, но некоторые темы обрабатывают это разными способами, поэтому, если код не работает для вас, ваша тема, вероятно, использует по-другому … В этом случае обновите свой вопрос, добавив код вашего шаблона, и, конечно же, кто-то вам скоро поможет.

Легко обрезать текст в соответствии с символами или словами, даже предложениями, но PHP не знает, сколько строк текста у вас есть. Этот расчет сделан браузером после того, как контент покинул сервер и зависит от размера экрана, ширины окна, шрифтов, самого браузера, даже некоторые плагины браузера могут изменить ситуацию. Кроме того, длина слов может изменить «поток» и «обертку» текста – приводит к тому, что наши дизайнеры сходят с ума, поскольку они используются для проектирования для печати, где все эти вещи можно жестко контролировать.

Чтобы приблизиться к тому, что вы хотите, вам нужен Javascript, но здесь нет темы. С PHP, лучшее, что вы получаете, это что-то вроде @AndreYonadam (который я поддержал) или @ GM (который я также поддержал), но здесь есть множество других вопросов с похожими ответами.