Блог о программировании, электронике и рыбалке

Выполнение PHP кода в WordPress без плагинов

php в wordpressФункция, позволяющая использовать 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 код можно добавлять в записи только в режиме Текст.

php в wordpress

Помните, что использовать данную конструкцию смогут все пользователи обладающие правами на написание постов. В целях безопасности рекомендую в коде функции обязательно заменить шоткод [execs] на любой другой, который будет известен только вам. Путь это будет что-то похожее на [qjwctrwh].

Варианты использования PHP в постах WordPress

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

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

Примеры использования функции

Определение IP адреса пользователя

[execs] echo $_SERVER['REMOTE_ADDR']; [/execs]

54.36.148.54

Количество постов в блоге

[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]

2759

Количество рубрик в блоге

[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

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

Присоединяйтесь к нашей группе в Telegram @GeekElectronics
  • keyboard_arrow_downВыполнение PHP кода в WordPress без плагинов
    • Автор:
    • Миниатюра: Выполнение PHP кода в WordPress без плагинов
    • Рубрика: Wordpress
    • Обновлено: 26.12.2017
    • Комментариев: 2
    • Просмотров: 5 227
  • Оцените пожалуйста статью
    1 Star2 Stars3 Stars4 Stars5 Stars
    Загрузка...
  • Поделитесь с друзьями
Geek Electronics

Комментариев: 2

  • Avatar for source
    Андрей:

    Если разместить PHP код в текстовом виджете, то эта функция позволит ему выполняться?

    • Avatar for source
      source:

      Нет. Описанный код работает только для постов и страниц.
      Для использование PHP кода в текстовых виджетах WordPress вам необходимо добавить в файл functions.php вашей темы следующую функцию:

      add_filter('widget_text',' text_html_php_widget ',100);
      function text_html_php_widget($text) {
      if(strpos($text,''.$text);
      $text = ob_get_contents();
      ob_end_clean();
      }
      return $text;
      }

Добавить комментарий

arrow_upward