Мне нужен метод для автоматического создания страниц (используя <!--nextpage-->
) в сообщениях на основе количества слов.
Например… Сообщение, содержащее 1200 слов, должно быть разбито на 6 страниц с разрывом страницы после каждых 200 слов.
Я понимаю, что могу сделать это вручную. Но эта функциональность необходима для сайта на базе WordPress, который будет содержать архивы импортированных данных на нескольких языках.
Пытался найти плагин, который бы делал что-то подобное. Не удалось найти.
Это сложно сделать программно из-за возможных вариаций в html и баланса тегов. Однако, если вы попытаетесь, вот как я предлагаю это сделать.
Во-первых, WordPress настраивает пагинацию записей в
setup_postdata()
, которая вызывается в концеthe_post()
. Это означает, что вам нужно получить эти<!--nextpage-->
строки в сообщениях до концаthe_post()
. Действие'loop_start'
должно работать для этих целей. Он даже передает копию текущего объекта WP_Query по ссылке, поэтому вы можете вносить изменения непосредственно в запрошенные сообщения!Что-то вроде этого для начала:
Надеюсь, это дало вам представление о том, что вам нужно сделать. Я бы предложил найти какой-нибудь способ временно удалить html-теги и заменить их после вставки
nextpage
флагов, потому что вышеприведенная функция также будет считать пробелы внутри HTML-тегов и может даже поместить разрыв страницы внутри одного.Приятно! +1. Единственное, что я бы изменил, это установить
count($words)
перед оператором if (быстрее).полный новичок здесь, ребята. не подскажете где разместить этот код? в файле functions.php в каталоге шаблона?
Functions.php должен работать как надо, но, как я уже сказал, прямо сейчас это приведет к очень неустойчивому поведению, если в ваших сообщениях много html. Я обновлю ответ, если придумаю хороший способ решить эту проблему.
@kaiser в отношении вашего комментария выше, не могли бы вы добавить ответ или отредактировать существующий? (в зависимости от того, что подходит) Это было бы очень полезно. 🙂
Добро пожаловать в WPSE Куимби! Пожалуйста, убедитесь, что вы раскрываете любую связь с подключаемыми модулями, на которые вы ссылаетесь. Кроме того, пожалуйста, прочитайте это — некоторые могут счесть этот пост граничащим между рекламой и ответом :).
Спасибо, что сэкономили мое время. При переносе сайта, отличного от wordpress, на wordpress, я пытался заменить PAGEBREAK на wordpress. Я сделал это со следующим синтаксисом.
В этом вам может помочь модуль «автоматической разбивки на страницы» Studio Hyperset Page-Links Plus.
Это позволяет пользователям WordPress обменять утомительные встроенные теги на инструмент управления всем сайтом, который быстро и единообразно разбивает сообщения и страницы на страницы.
Модуль автоматически предотвращает вдовы, сироты, конечные заголовки и избегает разделения предложений и отдельных слов, а также может быть настроен на переопределение или игнорирование существующих встроенных тегов.
Проверьте это здесь: http://pagelinksplus.com/wordpress-pagination-modules/wordpress-pagination-auto-pagination