Исполняемый php код в записях WordPress

Всем привет!

Сегодня я хочу рассказать о том, как вставить исполняемый php-код в записи и страницы сайта на WordPress. Делать мы это будем опять без использования плагина, а поможет нам в этом плагин! =) Как бы парадоксально это не звучало. На самом деле мы просто подсмотрим как реализовать необходимый нам функционал в плагине Inline PHP (дословно – встроенный в строки php). Заодно возьмем на вооружение этот прием – использования кода из плагинов для реализации задач без использования плагина. Надеюсь, заковыристое вступление не отпугнуло вас. Приступим!

Итак, перед нами стоит вопрос: “Как вставить php код в статью WordPress?”. Но вставить не в качестве содержимого статьи, а в качестве исполняемого кода, который выведет результат своей работы в определенное место статьи.

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

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

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

Кстати, статьи с внедрением кода и динамически формируемых элементов в некоторых случаях затрудняют “копипаст” (copy and paste; копирование и вставку – воровство контента) или делают его невозможным.

Ближе к делу – нужно вставить php код в статью. Нахожу достаточно популярный плагин, который даёт такой функционал – Inline PHP. Поскольку я стараюсь использовать плагины по минимуму, то не устанавливаю этот плагин, а изучаю его код и беру оттуда то, что нужно. Вношу некоторые изменения и вуаля!

Вот код, который нужно вставить в файл functions.php вашего активного шаблона WordPress:

Для тех, кто хочет понять и разобраться что происходит в коде – посмотрите статью “Вставка кода php в виджет без плагина”. Там код очень похож на этот и даны подробные разъяснения. Вы поймете алгоритм. Повторяться здесь по этому поводу не буду.

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

Вот пример того, как внедрить в статью php-код к исполнению:

А вот так можно вызвать функцию hello_world(), которую мы с вам создали в прошлой статье о файле functions.php:

Если будете использовать встроенный php код в записях своего блога, то для большей безопасности рекомендую вместо exec придумать свой тег для запуска. Просто замените “exec” на что-то другое в том коде, который размещаете в functions.php. И потом при вставке кода в статью используйте эти свои теги, чтобы никто не воспользовался потенциальной “дырой”, которую, возможно, создает внедряемый php код.

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

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

Напишите используете ли вы в своих статьях исполняемый код php? Если используете, то для каких целей?

Спасибо за внимание. Безошибочного вам исполнения кода! =)

Понравилась статья? Не забудьте поделиться с друзьями и коллегами:

Вы можете пропустить чтение записи и оставить комментарий. Размещение ссылок запрещено.

15 комментариев к записи “Исполняемый php код в записях WordPress”

  1. Мария

    Хорошая и полезная статья, как и сайт в целом. Давно хочу разобраться с php код, уже хочется начать работать самостоятельно. Много видео различных есть, а тут наткнулась на личного консультанта ))) Надеюсь вы не против будете Алексей если к Вам по средству комментариев с вопросом обратиться.

    • Алексей Ершов

      Спасибо, Мария!
      Личный консультант может вам дорого обойтись =)
      Пишите-пишите, будет время – обязательно отвечу.

  2. Мария

    Обещаю я не буду настойчивой, да и пока мне не до этого. Много другой работы. А вы оказывается программист. А верстать сайты на WordPress можете? Я сейчас себе дизайн рисую нужен будет верстальщик. Хотя я тут уже как бы заочно с одним договорилась. Трудности с дизайнером немного возникли, поэтому жду пока нарисуют мне шаблон сайта.
    Проблем много. А,кстати есть вопрос. У меня медленно загружались страницы на сайте, я воспользовалась дополнительной услугой своего хостинга персональный веб сервер. Вроде по началу страницы сайта стали хорошо грузится, а потом вообще, что-то стал зависать. Я написала в техническую поддержку, а они сказали дословно: Попробуйте убрать с сайта информацию, отображаемую с ресурса smartresponder.ru . Вероятно, это решит проблему.
    Я убрала подписку на рассылку и действительно проблема исчезла. Вы как специалист можете сказать, что это за проблема. Ведь тут проблема скорее всего в коде.

    • Алексей Ершов

      Версткой сайтов не занимаюсь.

      Подключение любых скриптов сторонних сайтов, конечно же, замедляет загрузку страницы. Даже те же счетчики посещаемости вносят свою лепту в этот процесс.
      Рекомендую воспользоваться сервисом gtmetrix.com для подробного анализа скорости загрузки вашего ресурса. Там будет показано время загрузки каждого из элементов сайта и даны рекомендации, применив которые вы сможете улучшить время отображения веб-страниц.
      Я планирую писать и на эту тему. И в моём блоге есть ещё много чего оптимизировать. Возможно, почерпнете и для себя что-то новое и полезное.

      • Мария

        Спасибо Алексей за ответ.

  3. Тимур

    Привет. Спасибо за данный код. Есть вопрос. Какие версии WordPress поддерживаются? Проверялось ли на 3.x-3.8.x?

    • Алексей Ершов

      Привет, Тимур.
      У меня на 3.х работает. Собственно, в коде нет ничего такого, что требовало бы отдельных проверок на совместимость. Хуки по любому будут работать в WordPress – это одна из основных фишек структуры WP, а остальной код – на чистом php, без использования каких-то стандартных функций WP.

      • Тимур

        Тогда посмотрим. Кстати хуки это очень сильная штука, когда начал немного смотреть в сторону кода WP и смотреть кодекс, сразу полюбил за это еще больше.

    • Алексей Ершов

      Появилась возможность и решил проверить на всякий случай для WP 3.8.1 – код работает как положено, без ошибок. Так что можно смело использовать и уверен, что в будущих версиях WP с этим кодом проблем не возникнет. Пока будут живы хуки и функция the_content – все будет ок. =) Разве что в php что-то поменяется, но это тоже сомнительно, поскольку там тоже сохраняют совместимость устаревших функций при разработке новых версий.

      • Тимур

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

        • Алексей Ершов

          Спасибо за ретвит статьи.
          Кнопки соцсетей слева вообще не заметны? В какой-то мере это хорошо, что не навязчивы, но раз не смогли сразу найти, то плохо =)
          Да, вверху я переделаю на ссылки в соцсети, а с этими скользящими еще подумаю, может, действительно – после статьи будет более привычный для большинства читателей вариант. Спасибо.

          • Тимур

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

            @
  4. Алена

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

  5. Колька

    Здравствуйте! У меня не работает
    Вставил в функцион пхп вот такой код:

    а в статьях вставляю вот так:

  6. Андрей

    Спасибо за статью. Но у меня не получилось разобраться. При внесении этого кода в файл function.php почему-то выдаёт ошибку, даже если php-код в запись не вставлен. Как думаете, в чём может быть проблема? Может, кодировка самого текста неправильная?

Оставить комментарий

Для размещения кода в комментарии используйте теги <pre> </pre>, например:


Подписаться, не комментируя