Функция, позволяющая использовать PHP в постах и на страницах WordPress без установки дополнительных плагинов.
Думаю, что у многих возникали ситуации, когда при написании очередной статьи в блоге возникала острая необходимость в использовании языка программирования PHP. Кто-то для этих целей использует старенький плагин под названием Inline PHP, а кто-то выносит скрипт в отдельный файл и дает на него ссылку ну или просто выводит его на странице блога в iframe. Каждый из этих вариантов по своему хорош и выбирать конечно вам, но для себя я выбрал вариант реализацию поддержки PHP с помощью простой функции, которую необходимо добавить в файл functions.php вашей темы оформления.
Код функции позволяющий выполнять PHP код в постах и на страницах WordPress
/* PHP внутри постов и страниц */
function exec_php($matches){
eval('ob_start();'.$matches[1].'$inline_execute_output = ob_get_contents();ob_end_clean();');
return $inline_execute_output;
}
function inline_php($content){
$content = preg_replace_callback('/\[execs\]((.|\n)*?)\[\/execs\]/', 'exec_php', $content);
$content = preg_replace('/\[execs off\]((.|\n)*?)\[\/execs\]/', '$1', $content);
return $content;
}
add_filter('the_content', 'inline_php', 0);
Для использования PHP кода в ваших постах вам необходимо разместить его между тегами [execs] [/execs].
Для вывода PHP кода без его выполнения используйте теги [execs off] [/execs]
PHP код можно добавлять в записи только в режиме Текст.
Помните, что использовать данную конструкцию смогут все пользователи обладающие правами на написание постов. В целях безопасности рекомендую в коде функции обязательно заменить шоткод [execs] на любой другой, который будет известен только вам. Путь это будет что-то похожее на [qjwctrwh].
Варианты использования PHP в постах WordPress
Думаю, что самым востребованным будет вывод результатов работы какого-то скрипта на страничке вашего блога. В моей случае так работают все страницы моего блога из раздела Сервисы. При желании, можете сами зайти и посмотреть.
Следующим можно рассмотреть вариант проведения конкурса на блоге, победителем которого будет участник, оставивший 100500-й комментарий к вашей статье. При желании, вы сможете вывести текущее количество комментариев и при достижении заданного количества опубликовать результаты конкурса и поздравить победителя.
Примеры использования функции
Определение IP адреса пользователя
[execs] echo $_SERVER['REMOTE_ADDR']; [/execs]
95.108.213.125
Количество постов в блоге
[execs] echo wp_count_posts('post')->publish; [/execs]
141
Количество страниц в блоге
[execs] echo wp_count_posts('page')->publish; [/execs]
13
Количество комментариев в блоге
[execs] echo wp_count_comments()->approved; [/execs]
2739
Количество рубрик в блоге
[execs] echo wp_count_terms('category', array( 'hide_empty' => true )); [/execs]
14
Количество меток в блоге
[execs] echo wp_count_terms('post_tag', array( 'hide_empty' => true )); [/execs]
436
Если возникнут вопросы, то задавайте их в комментариях. Еще было бы интересно узнать для каких целей вы собираетесь использовать данную функцию.
Если разместить PHP код в текстовом виджете, то эта функция позволит ему выполняться?
Нет. Описанный код работает только для постов и страниц.
Для использование PHP кода в текстовых виджетах WordPress вам необходимо добавить в файл functions.php вашей темы следующую функцию: