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

Выполнение 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('/\[exec\]((.|\n)*?)\[\/exec\]/', 'exec_php', $content);
     $content = preg_replace('/\[exec off\]((.|\n)*?)\[\/exec\]/', '$1', $content);
     return $content;
}
add_filter('the_content', 'inline_php', 0);

Для использования PHP кода в ваших постах вам необходимо разместить его между тегами [exec] [/exec].

Для вывода PHP кода без его выполнения используйте теги [exec off] [/exec]

PHP код можно добавлять в записи только в режиме Текст.

php в wordpress

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

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

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

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

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

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

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

54.90.207.75

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

[exec] echo wp_count_posts('post')->publish; [/exec]

179

Количество страниц в блоге

[exec] echo wp_count_posts('page')->publish; [/exec]

19

Количество комментариев в блоге

[exec] echo wp_count_comments()->approved; [/exec]

2604

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

[exec] echo wp_count_terms('category', array( 'hide_empty' => true )); [/exec]

13

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

[exec] echo wp_count_terms('post_tag', array( 'hide_empty' => true )); [/exec]

504

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

Не забывайте оценивать и комментировать статьи, чтобы автор понимал — стоит ли писать на похожие темы или это интересно только ему одному :)

Читайте нас в социальных сетях

вконтакте twitter google plus facebook
  • keyboard_arrow_downВыполнение PHP кода в WordPress без плагинов
    • Автор:
    • Язык: ru-RU
    • Миниатюра: https://geekelectronics.org/wp-content/uploads/2017/12/php-wordpress.jpg
    • Рубрика: Wordpress
    • Обновлено: 05.12.2017
    • Комментариев: 2
    • Просмотров: 83
  • Оцените пожалуйста статью
    1 Star2 Stars3 Stars4 Stars5 Stars 2 votes, average: 5,00 out of 5
    Loading Загрузка...
  • Поделитесь с друзьями
logo

Комментариев: 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,'< ?php') !== false) { ob_start(); eval('?>'.$text);
      $text = ob_get_contents();
      ob_end_clean();
      }
      return $text;
      }

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

arrow_upward