WordPress — это отличная CMS , но реализация некоторых функций в вашей теме может потребовать немного побочного мышления. Содержимое вашей страницы или сообщения обычно выводится кодом темы с помощью одного вызова функции:
the_content(args);
Но что, если вам нужно разделить содержимое на два или более блоков? Это может быть необходимо, если вашей теме требуется несколько столбцов или разделов на странице. WordPress предоставляет функцию get_the_content()
В Интернете есть несколько решений, но большинство из них включают:
- Разделение контента по тэгам HTML, таким как заголовки
h2
К сожалению, это требует, чтобы автор контента знал немного HTML, и он не очень универсален — вы не могли разрешить два заголовка в одном столбце. - Использование шорткода WordPress. Это более гибко, но все же возлагает бремя на редактор контента, чтобы запомнить и использовать правильный код.
Тег WordPress <!--more-->
Обычно он используется для разделения длинной статьи на две или более страниц, но не все темы используют эту возможность, и по умолчанию он работает только для сообщений WordPress (но не для страниц). Использование <!--more-->
- Кнопка «еще» на панели инструментов доступна как на панели визуального редактирования, так и на панели редактирования HTML.
- Подразделения могут быть размещены в любом месте контента.
- Нетехническим пользователям легко понять, как контент будет разделен.
Чтобы разделить содержимое, найдите папку темы (wp-content / themes), отредактируйте или создайте файл functions.php и добавьте следующую функцию в блок <? Php…?>:
// split content at the more tag and return an array
function split_content() {
global $more;
$more = true;
$content = preg_split('/<span id="more-d+"></span>/i', get_the_content('more'));
for($c = 0, $csize = count($content); $c < $csize; $c++) {
$content[$c] = apply_filters('the_content', $content[$c]);
}
return $content;
}
Теперь вам нужно найти файлы темы, которые вызывают the_content()
цикле WordPress . Вы должны найти его в single.php и page.php, так как они используются для отображения отдельных сообщений и страниц соответственно. Он также может быть найден в index.php , archive.php и search.php , однако, они обычно показывают более одной статьи, поэтому будьте осторожны, как обрабатываются несколько блоков контента.
Найдя соответствующий код, закомментируйте the_content()
split_content()
Возвращает содержимое в виде массива; каждый элемент содержит один блок контента, разделенный <!--more-->
< ?php
// original content display
// the_content('<p>Read the rest of this page »</p>');
// split content into array
$content = split_content();
// output first content section in column1
echo '<div id="column1">', array_shift($content), '</div>';
// output remaining content sections in column2
echo '<div id="column2">', implode($content), '</div>';
?>
Я надеюсь, что вы найдете это полезным.