Intereting Posts
Рекомендуемое изображение (отзывчивое) над содержимым слишком мало после обновления до WordPress 4.4 Почему эта функция update_post_meta не удаляет собственное поле? Когда методы перенаправления wp безопасны для соединения? Вызов неопределенной функции get_header () в index.php Информация о продукте Woocommerce на боковой панели? Есть ли преимущество использования multisite, если у меня есть несколько веб-сайтов WordPress для себя? Две функции, использующие фильтр registration_errors экспортировать функциональность csv в мой плагин Всплывающее успешное сообщение в Fancybox? Удалить базу таксономии или термин из URL-адреса Защитите пароли в wp_users с более надежной защитой, чем MD5 Показать Slug вместо имени вызов дополнительных ссылок css и js для настраиваемого шаблона страницы Разработка плагинов – получить URL-адрес администратора (включая случаи, когда wp-admin не используется) Сайт WP только показывает Javascript для главной страницы

Вставка собственного скрипта PHP на домашнюю страницу

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

Я смотрел варианты того, как включить PHP-код в поле HTML, которое предоставляется WordPress.

Я нашел несколько плагинов, которые утверждают, что разрешают разбор и выполнение PHP-скриптов внутри поля HTML / текстового поля. Однако ни один из них не работает для меня. Я пробовал PHP Code Widget в последний раз, и я заметил, что каким-то образом мой PHP-код автоматически преобразуется в комментарии HTML. См. Пример ниже –

После активации плагина я ввел это в текстовое представление (я также попытался визуальный просмотр) окна HTML.

<?php echo "Hello World!"; ?> 

Однако на странице ничего не появилось. Когда я сделал элемент проверки, он показал мне что-то вроде этого –

 <div class="htmlbox-content"> <!--?php echo "Hello world!"; ?--> </div> 

Он автоматически преобразовал открытую скобку моего PHP-кода в комментарий HTML. Я пробовал редактировать его inline, однако всякий раз, когда я удаляю «-», они возвращаются снова, т.е. не позволяют мне изменять их.

Я не уверен на 100%, если я делаю это правильно. Тем не менее, я не мог найти ничего плохого в шагах, которые я выполнял. Как это исправить?

Кроме того, я знаю, что включение PHP-кода в HTML / текстовое поле не является отличным решением. Однако я не мог найти ничего, что указывало бы мне на то, как я могу достичь той же цели в противном случае. Любой учебник / указатели в противном случае был бы действительно оценен!

Некоторые детали:

Я в сети включен WordPress 3.9.2

Я попытался включить только веб-сайт, а также включить его по сети. Тот же результат в обоих сценариях.

Плагин совместим для версий 2.8 и выше и поддерживает uptil 4.0.1, следовательно, в идеале должен работать. Я также пробовал другие плагины с разными вариантами поддержки, но ни один из них, похоже, не работает.

Solutions Collecting From Web of "Вставка собственного скрипта PHP на домашнюю страницу"

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

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

Что касается виджета, посмотрите на API виджета . Я (с некоторой помощью от @birgire ;-)) также сделал недавний виджет, который отображает категории, которые вы можете использовать в качестве базы для своего виджета. Вы можете просто скопировать свой код из выбранной службы в метод widget . Вы можете сделать это очень динамичным.

Вот основной скелет, который вы можете использовать. Чтобы сделать эту работу, вам нужно только заменить // ADD YOUR CUSTOM PHP CODE HERE FOR EXECUTION TO DISPLAY ON FRONT END с вашим собственным php-кодом, который находится внутри метода widget() ( ПРИМЕЧАНИЕ: Требуется PHP 5.4+ )

 class Custom_Services extends WP_Widget { public function __construct() { parent::__construct( 'widget_custom_service', _x( 'Custom Service Widget', 'Custom Service Widget' ), [ 'description' => __( 'Displays information from a custom service.' ) ] ); $this->alt_option_name = 'widget_custom_service'; add_action( 'save_post', [$this, 'flush_widget_cache'] ); add_action( 'deleted_post', [$this, 'flush_widget_cache'] ); add_action( 'switch_theme', [$this, 'flush_widget_cache'] ); } public function widget( $args, $instance ) { $cache = []; if ( ! $this->is_preview() ) { $cache = wp_cache_get( 'widget_services', 'widget' ); } if ( ! is_array( $cache ) ) { $cache = []; } if ( ! isset( $args['widget_id'] ) ) { $args['widget_id'] = $this->id; } if ( isset( $cache[ $args['widget_id'] ] ) ) { echo $cache[ $args['widget_id'] ]; return; } ob_start(); $title = ( ! empty( $instance['title'] ) ) ? $instance['title'] : __( 'Category Posts' ); /** This filter is documented in wp-includes/default-widgets.php */ $title = apply_filters( 'widget_title', $title, $instance, $this->id_base ); // ADD YOUR CUSTOM PHP CODE HERE FOR EXECUTION TO DISPLAY ON FRONT END echo $args['after_widget']; if ( ! $this->is_preview() ) { $cache[ $args['widget_id'] ] = ob_get_flush(); wp_cache_set( 'widget_services', $cache, 'widget' ); } else { ob_end_flush(); } } public function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags( $new_instance['title'] ); $this->flush_widget_cache(); $alloptions = wp_cache_get( 'alloptions', 'options' ); if ( isset($alloptions['widget_custom_service']) ) delete_option('widget_custom_service'); return $instance; } public function flush_widget_cache() { wp_cache_delete('widget_services', 'widget'); } public function form( $instance ) { $title = isset( $instance['title'] ) ? esc_attr( $instance['title'] ) : ''; ?> <p> <label for="<?php echo $this->get_field_id( 'title' ); ?>"><?php _e( 'Title:' ); ?></label> <input class="widefat" id="<?php echo $this->get_field_id( 'title' ); ?>" name="<?php echo $this->get_field_name( 'title' ); ?>" type="text" value="<?php echo $title; ?>" /> </p> <?php } } add_action( 'widgets_init', function () { register_widget( 'Custom_Services' ); }); 

Виджет PHP Code не изменяет текстовый или визуальный редактор или стандартный виджет «Текст»; он добавляет виджет «PHP Code», который вы найдете в разделе «Внешний вид»> «Виджеты»> «Доступные виджеты».

Если вы хотите отобразить свой скрипт внутри тела сообщения или страницы, вы должны создать Shortcode . Основной пример API будет работать для «Hello World»; вы добавили бы это в functions.php вашей темы (или еще лучше создать плагин):

 function foobar_func( $atts ){ return "Hello World"; } add_shortcode( 'foobar', 'foobar_func' ); 

Затем в своем сообщении или на странице введите [foobar] чтобы отобразить ваш скрипт. Добавьте код для своего настраиваемого скрипта PHP и return окончательный вывод, который будет отображаться (вы не хотите echo из функции shortcode).

Или создание короткого кода в плагине будет держать его доступным даже при переключении тем:

 <?php /** * Plugin Name: wpse-182025 * Description: Creates [wpse-182025] shortcode to execute custom PHP script on posts, pages, etc * Plugin URI: http://wordpress.stackexchange.com/a/182026/54569 * Version: 1.0 */ function wpse_182025_func() { // Add your custom PHP script $output = "Hello World"; return $output; } add_shortcode( 'wpse-182025', 'wpse_182025_func' ); ?> 

Добавьте вышеуказанный код в /wp-content/plugins/wpse-182025/wpse-182025.php , или создайте папку /wpse-182025/wpse-182025.php локально, добавьте в zip-файл и загрузите с помощью плагинов > Добавить новые> Загрузки. Отобразите [wpse-182025] с помощью [wpse-182025] . При необходимости вы можете изменить любой пример кода плагина.