Intereting Posts
Добавление Dropbox dropin js с помощью wp_enqueue_script название виджета и текст контента показывают ссылку без кодировки ссылок Изменить формат сообщения с помощью настраиваемого поля Альтернативный контент между сообщениями не повторяется Неустранимая ошибка: допустимый размер памяти в PHP при распределении меньше Как вызвать миниатюру с помощью aqua resizer в лучшей практике. Укажите уведомление размеров изображения от GTmetrix Могу ли я подключить функцию класса uninstall к глобальному var, объявленному в основном файле плагина? имена почтовых папок, а не числа Разделите тег запятой Как удалить изображения из «Загружено в этот пост»? Как добавить изображения в главное меню навигации Остановите WordPress полностью и запустите свой собственный код. Схват данных из wp_usermeta Крюк после создания сообщения и извлечения информации из этого сообщения сразу Как сохранить каждую опцию в меню множественного выбора, поскольку она представляет собой собственную пару meta_key + meta_value?

Включение внешнего файла в сообщение (и использование обработанных путей)

У меня есть сообщение, которое содержит относительно большую таблицу, которая часто обновляется. Вместо того чтобы использовать (медленнее) веб-интерфейс для обновления сообщения каждый раз, я установил один из плагинов «запускать PHP» и поместил короткий кусок кода PHP в тело таблицы, который открывает внешний файл на сервере и помещает его в стол в почте. Таким образом, я могу редактировать файл локально в ответном текстовом редакторе по мере необходимости, и это изменение немедленно отражается при обслуживании страницы (и без каких-либо изменений в любой из таблиц WordPress).

Это работает очень хорошо, и я в целом удовлетворен этим, но есть небольшой улов в том, что путь к внешнему текстовому файлу относится к хранилищу на сервере (я использовал менеджера медиабиблиотеки для его хранения, а потому Я использую "wp-content/blogs.dir/1/files/2011/02/foobar.txt" функцию, а PHP – серверный, путь имеет форму "wp-content/blogs.dir/1/files/2011/02/foobar.txt" ). Пути к другим файлам, например изображениям, которые используют клиентский код, например JavaScript, относятся к URL. Это, очевидно, не идеально по нескольким причинам.

Поэтому у меня есть два вопроса:

  1. Есть ли лучший способ включить внешний контент в сообщение, чем использовать PHP?
  2. (ну, 1б.) Если нет, есть ли более эффективный, более последовательный способ доступа к файлам? (То есть, чтобы PHP мог использовать URL-относительные пути вместо серверных путей?)

Разъяснение:

В сообщении у меня есть что-то вроде этого (код выключен с моей головы, поэтому игнорируйте любые ошибки):

 … <table> <thead><th>foo</th><th>bar</th><thead> <tbody> <?php $fn ="wp-content/blogs.dir/1/files/2011/02/foobar.txt"; $fh =fopen($fn, "r"); $data=fread($fh, filesize($fn)); //no clearstatcache; TXT file is not updated *that* often print($data); fclose($fh); ?> <tbody> </table> … 

Где текстовый файл содержит что-то вроде этого:

 <tr><td>Blah</td><td>123</td></tr> <tr><td>Foobar</td><td>asd</td></tr> <tr><td>Test</td><td>555</td></tr> … 

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

Существует также JavaScript перед таблицей, которая касается множества изображений в соответствии с оператором switch – изображения были импортированы в медиа-библиотеку – что-то вроде этого:

 case 'a': element.style.backgroundImage='url(/blogs/foobar/files/2011/02/A.png)'; break; case 'b': element.style.backgroundImage='url(/blogs/foobar/files/2011/02/B.png)'; break; … 

Solutions Collecting From Web of "Включение внешнего файла в сообщение (и использование обработанных путей)"

1) Да, есть лучшие способы … можно было бы использовать короткий код вместо хранения php в вашем db. Напишите и зарегистрируйте обратный вызов короткого кода, который читает ваш файл и возвращает содержимое и заменяет раздел <?php ... ?> В сообщении с помощью короткого кода. Кроме того, вы можете прочитать файл с file_get_contents(); , сохраняет несколько строк кода.

2) Вы можете написать функцию, которая имитирует это, но преимущество будет слишком минимальным, чтобы оправдать усилия.

BUT: вместо get_attached_file($attachment_id) вашего пути к файлу в get_attached_file($attachment_id) вы можете получить свой путь через get_attached_file($attachment_id) .

Как часто этот файл обновляется? Почему бы не вытащить данные и сохранить их в переходном режиме с ограничением по времени. Таким образом, когда он подан, вы ничего не обрабатываете, и он также кэшируется. (и проблема с вашим URL также, вероятно, разрешена).

Обычно вы также сравниваете сохраненное значение переходного процесса с самыми последними данными и только обновляете его, если есть изменение (используя md5 или md5_file ).

http://codex.wordpress.org/Transients_API