Домой Оргтехника Вставить посты в страницу wordpress. Исполняемый php код в записях WordPress

Вставить посты в страницу wordpress. Исполняемый php код в записях WordPress

Бывают ситуации, когда очень удобно использовать весь потенциал языка программирования PHP в тексте при написании статей. Речь идет о статьях для WordPress.

Все кто пробовал написать какой либо php код в посте, в надежде что он сработает, знают, что WordPress воспринимает такой код как простой текст. Однако иногда бывает удобно запустить, например, какой-нибудь цикл вывода прямо в тексте при написании статьи, ведь контент такой статьи будет обновляться динамически. Другим примером может служить возможность вызывать готовые функции в посте, в случае необходимости или, например, вставить какой-нибудь php файл в текст поста по средствам php функции require():

Require "my_script.php";

В общем, здесь фантазия безгранична и правда в том, что невозможность использования php в тексте статьи в некоторых случаях может стать настоящей проблемой. Как-то давно я столкнулся с такой проблемой, решил её взяв и немного переделав код из какого-то плагина (сейчас уже не вспомню название).

Итак, чтобы реализовать возможность вставлять исполняемые PHP скрипты в текст статьи / поста или статической страницы , нужно добавить в уже, наверное, до боли знакомый нам файл темы functions.php следующий код:

## Исполняемый PHP код в контенте записи WordPress. ## PHP_код ## ## @version: 1.0 if("Исполняемый PHP код в контенте"){ add_filter("the_content", "content_exec_php", 0); function content_exec_php($content){ return preg_replace_callback("/\(.+?)\[\/exec\]/s", "_content_exec_php", $content); } function _content_exec_php($matches){ if(" off" === $matches){ return "\n\n<"."pre>". htmlspecialchars($matches) ."\n\n"; } else { eval("ob_start(); {$matches}; \$exec_php_out = ob_get_clean();"); return $exec_php_out; } } }

После того, как код добавлен станет возможным использовать в статьях конструкцию такого вида:

Php код

Например:

// Комментарий global $wp_version; echo "Текущая версия WP: $wp_version";

Чтобы отключить выполнение кода, можно использовать следующую конструкцию. Она выведет просто код, как если бы мы вставили php код как текст.

Php код

Важно о защите

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

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

Данная фича поможет удалить десяток лишних плагинов, которые занимаются вставкой в тело поста каких-либо простых данных с возможностью предварительной обработки. Скажем, вставить в любое место блок adsense. Или обновляющийся в реальном времени курс бакса. Или любое значение, хранящееся в БД WP или сторонней таблицы.

Бывает, надо воткнуть текущую дату прямо в середину текста. То есть, дату не на момент публикации поста, а текущую дату с точки зрения читателя. Или любую другую меняющуюся информацию или кусок JS кода без постобработки его движком. Или что-то, что нужно пересчитывать каждый раз при обновлении страницы, и это что-то должно находиться в теле поста. Или.. Ну, думаю, вы поняли. :)

Мы будем писать плагин! Он очень простой и не требует никаких знаний в создании плагинов для WP. Единственный его недостаток — отсутствие «морды» в админке WP, то есть, поставить такой каким-нибудь заказчикам будет не комильфо. Но для собственных нужд вариант отличный.

В папке /wp-content/plugins/ создаем файл с каким-нить уникальным именем, скажем, «insert-any-data-into-post.php». Вначале прописываем блок комментария, который WP будет впоследствии парсить для описания плагина в своей админке. Можно писать любые данные какие хочется, затем подключаем shortcode и пишем простую функцию. Весь код:

Если вкратце, то это все. :) Внутри функции можно делать любые действия, получая и обрабатывая любые данные. В примере выше при написании в любом месте поста конструкции будет выводиться текущая дата на момент просмотра посетителем этого поста.

А еще можно подавать на вход этой функции различные параметры. Скажем, код ниже расширяет нашу функцию и добавляет возможность отображать не только текущую дату, но и вчерашнюю/завтрашнюю, а также позволяет менять вид даты.

Function give_me_date_handler ($atts) { //из массива атрибутов делаем разрешенные переменные и задаем значения по умолчанию, необязательно но удобно extract(shortcode_atts(array("type" => "yesterday,today,tomorrow", "format" => "short,full"), $atts)); //перебираем какая нам дата нужна switch($type) { case "tomorrow": $time = strtotime("+1 day"); break; case "yesterday": $time = strtotime("-1 day"); break; default: $time = time(); } //перебираем вид даты if ($format == "short") $date = date("d.m.Y", $time); else $date = date("r", $time); return $date; }

Переменные для нашей функции задаются через тэг в посте таким вот образом:

Результат написанного выше тэга: 21.08.2019

Скриншотик из админки редактирования поста:

Через функцию можно тянуть данные с БД и возвращать их, можно просто возвращать JS-код, обернув его в ob_start() и ob_end_clean() для удобства. Можно также создавать несколько шоткодов и соотвественно несколько функций, таким образом вместив в один файл/плагин все необходимые «вкрапления» для использования внутри тела публикации.

Вообщем, полезная штука!

- 5.0 out of 5 based on 2 votes

В прошлой статье мы рассмотрели, для нашего блога на WordPress, а здесь рассмотрим, как добавляются посты (заметки) в WordPress.

В WordPress есть два типа контента, это посты или как их еще называют заметки и страницы. Посты это динамический контент который, как правило, постоянно появляется на блоге, в определенных рубриках.

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

Для того чтобы создать пост, пройдите в административной панели WordPress в пункт: «Записи» >> «Добавить новую» .

В результате загрузится текстовый редактор, при помощи инструментов которого вы сможете форматировать текст, подобно тому, как вы это делаете в редакторе MS Word.

1. В поле «Введите заголовок» , укажите название поста.

2. При помощи панели «Загрузить/вставить» , вы сможете загрузить и вставить в ваш пост необходимые изображения и медиа файлы.

3. При помощи вкладок «Визуально» и «HTML» , вы можете переходить к редактированию HTML кода или оставаться работать в визуальной среде.

4. При помощи инструменов панели вы сможете форматировать текст. Нажав на соответствующую иконку, вы откроете дополнительную панель с очень полезными инструментами.

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

Вставляем текст.

Если вы подготавливаете свои тексты в редакторе MS Word, то не копируйте их сразу в окно редактора, используйте инструмент «Вставить из Word».

Для этого скопируйте текст в Word"е, затем перейдите в редактор WordPress и нажмите на иконку «Вставить из Word», после этого вставьте текст в открывшееся окно и нажмите на кнопку «Вставить».

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

Вставляем изображение в текст.

Для того чтобы в текст вставить изображение, установите курсор в то место в тексте, куда необходимо вставить изображение и нажмите на конку «Вставить изображение»:

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

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

Поле «Заголовок» является обязательным к заполнению. Остальные поля «Текст», «Подпись» и «Описание» можете заполнять по желанию.

В поле «Ссылка» можно задать ссылку, которая будет идти по изображению. По умолчанию ссылка идет на изображение, если нажать на кнопку «Ссылка на запись», то ссылка с картинки будет идти на сам пост, если нажать на кнопку «Нет», то ссылки не будет.

В пункте «Выравнивание» , можно задать расположение изображения на странице.

В пункте «Размер» , можно задать размер изображения.

После указания всех параметров, нажмите на кнопку «Вставить в запись» и изображение будет вставлено.

Вставляем тег "Далее".

Выбираем формат записи.

Начиная с WordPress версии 3. X были введены форматы постов. При помощи форматов, вы можете выбрать определенный вид отображения поста. Эта функция дает возможность разработчикам шаблонов, создавать различные типы записей в зависимости от потребностей. В шаблоне установленном в WordPrees по умолчанию, используется три формата отображения поста:

Форматы постов можно выбрать в панели справа от редактора. Форматы постов доступны только в темах для WordPress версии 3. X. Всего поддерживается 10 форматов постов, их наличие зависит от используемой вами темы. При использовании того или иного формата, тегу задается соответствующий класс, при помощи которого данному формату поста можно задать определенное оформление, при помощи CSS.

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

Первым делом вам необходимо установить и активировать плагин Insert Pages . После активации просто переходим в раздел Записи » Добавить новую административной панели сайта для того, чтобы увидеть его в действии.

Если вы используете визуальный редактор, то заметите новую кнопку в меню под названием ‘Insert Page’ .

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

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

После выбора записи/страницы кликните на кнопку Insert Page . Плагин добавить шорткод, необходимый для вывода выбранной вами записи/страницы.

Если вы используете текстовый редактор для составления ваших записей, то шорткод можно вставить вручную. Параметры шорткода достаточно простые.

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

Также можно указать ID записи. О том, как узнать ID записи в WordPress мы уже писали ранее.

Добавляем произвольные типы записей в записи блога

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

Плагин Insert Pages позволяет вам добавлять произвольные типы записей на страницы и записи блога. Например, вы можете создать произвольный тип записи для галереи изображений, а затем использовать Insert Pages для добавления этих галерей в ваши записи или страницы.

Таким же образом вы можете создать произвольные типы записей для видео, портфолио, отзывов клиентов и т.д. для добавления их в записи/страницы.

Использование произвольных шаблонов для отображения вставленных страниц

Insert Pages позволяет вам вывести заголовок, ссылку, контент или все поля для вставленных страниц. Однако, некоторым пользователям может понадобиться более тонкая настройка вывода. Этого можно достичь путем использования произвольных шаблонов.

Все, что вам нужно сделать, это создать пустой php файл и загрузить его в папку с вашей темой. Файл можно назвать как угодно. Например, custom-author.php.

Этот произвольный шаблон работает точно также, как и другой файл шаблона контента в вашей теме. Ниже пример файла шаблона, который мы создали для вывода страниц автора.

Можно использовать собственные классы CSS в файле вашего шаблона, а затем применить стили в файле таблицы стилей темы. Мы использовали следующий код для оформления страницы автора.

H3.author-name { font-size:16px; } .author-thumbnail { float:left; padding:10px; } .author-bio { font-style:italic; font-family: Lora, Georgia, Serif; }

Вот так в итоге выглядит финальный вариант:

Надеемся, что эта статья помогла вам добавить контент из одной страницы/записи WordPress в другую.

Если вам нужно вставлять куски кода в посты или страницы на сайте на ВордПресс, тогда вам пригодится наш сегодняшний пост. Это может быть полезным, например, когда вы публикуете уроки по программированию и в качестве образца вам нужно вставлять в свои посты небольшие фрагменты кода. Ведь очень часто бывает необходимым показать своим читателям образцы исходного кода на языке PHP, JavaScript, CSS или любом другом языке программирования.

По умолчанию WordPress фильтрует любой необработанный код, добавленный в посты, страницы, виджеты или комментарии. Это делается в целях безопасности, чтобы программный код не был исполняемым. Если вы, например, пишете пост сначала в пакете Word или любом текстовом редакторе, а потом вставляете этот текст в поле редактирования поста в консоли WordPress, движок автоматически конвертирует некоторые символы. Например, символ < в режиме просмотра Текст будет преобразован в < . Т.е., если вы вставляете в Визуальном режиме, например, фрагмент кода, который начинается с

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

Попробуйте, например, написать в режиме Текст:

При переключении в Визуальный режим (или же после публикации поста) вы не увидите желаемого текста Hello, World! поскольку система его скрыла, чтобы он не был исполняемым. Вот тут мы и подошли к проблеме: а как же отображать программный код в постах ВордПресс?

Простой способ отображения кода в WordPress

Самый простой способ добавить код в свои посты – делать обертку программного кода в режиме Текст HTML-тегом

Этот тег предназначен для отображения кода в том виде, в котором он был напечатан, т.е., со всеми пробелами, спецсимволами и тому подобное. Можно было бы, конечно, не использовать этот тег, а писать весь программный код сразу с использованием HTML-сущностей, но это очень сложный подход. Гораздо проще писать нужный код в Визуальном режиме редактирования публикации, а потом переключаться в режим Текст и обрамлять нужный фрагмент тегами 
........
, и при этом все «опасные» символы программирования автоматически преобразуются в HTML-сущности.

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

Тег

 — это идеальный элемент для больших блоков кода, поскольку он позволяет сохранять все пробелы, табуляции и тому подобное.

Для небольших блоков кода можно использовать тег HTML5 специально предназначенный для кода — . В режиме редактирования Текст в ВордПресс для этого есть даже специальный шорткод. При редактировании поста выделите нужный фрагмент и нажмите кнопку code на панели инструментов, и этот фрагмент будет обрамлен тегами ........ .

Тег

 — блочный, а тег  — инлайновый, т.е., большинство браузеров отображает его как display: inline; и его можно показывать прямо в абзаце, а не с новой строки.

Сложный способ отображения кода в WordPress

К сложному способу отображения программного кода я отношу специальные плагины для этого (например, Crayon Syntax Highlighter, Syntax Highlighter Evolved и подобные). Кто-то может возразить, что это наоборот простой способ, но я считаю, что всякие навороченные плагины только все усложняют. Очень часто можно встретить на сайтах ситуацию, когда ранее оформленный код с использованием шорткодов плагина по истечению времени так и отображается в браузере, например:

а должно быть красивое оформление и подсветка синтаксиса. Очень часто такие плагины не совместимы с новыми версиями движка, или же вебмастера часто забывают обновлять их. Или хуже – используют сразу несколько таких плагинов.

Да, такие плагины очень красиво делают подсветку синтаксиса на лету с помощью JavaScript и CSS, но они в основном довольно «тяжелые» для системы, а элементарную подсветку синтаксиса можно сделать без плагинов, с помощью нескольких классов для тегов div , span , code и pre , а также нескольких строк CSS-стилей.

Выбирать вам!

И еще к сложному способу вставки кода в страницы WordPress хочу отнести использование сторонних сервисов. Есть довольно много сайтов, на которых можно писать практически любой код и он будет отображаться так, как и должен. Примеры таких сервисов: CodePen, GitHub Gists и JSFiddle.

Они делают очень красивую подсветку синтаксиса и даже демо-просмотр результата исполнения кода, но сложность их заключается в необходимости использования вставки iframe’ами или же внешними JavaScript-библиотеками. К данному методу я прибегаю только для показа демо результата выполнения кода.

Вывод

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

Если у вас есть другие решения добавления кода в посты/страницы WordPress, дайте нам знать в комментариях ниже.

Новое на сайте

>

Самое популярное