Как я могу встроить внешний контент в виджет WordPress? - PullRequest
0 голосов
/ 12 мая 2018

Я хочу отобразить ссылку для загрузки внутри виджета WordPress. Загружаемый файл находится в подпапке download корня сайта, поэтому его можно загрузить через FTP. Имя файла и текст, который будет отображаться для ссылки на скачивание, должны храниться в простом текстовом файле в той же папке.

Предполагается, что WordPress установлен на www.mysite.com. Имя файла setup_1_0.zip и отображение ссылки Setup 1.0.

Я открыт для формата файла, в котором хранится эта информация, если я могу загрузить этот файл также по FTP.

Как я могу встроить эту информацию в пользовательский HTML-виджет, чтобы получить действительную ссылку для загрузки с текстом, взятым из этого файла?

1 Ответ

0 голосов
/ 12 мая 2018

Как автоматизировать процесс загрузки последней версии программного обеспечения для создания и загрузки ссылок в WordPress?

Исходя из вашей логики. Вы пытаетесь автоматизировать процесс загрузки своей последней версии программного обеспечения.

Вы не хотите обновлять вещи вручную, а просто хотите загрузить свою последнюю сборку в папку /download/. ( Оставляйте только последнюю версию с помощью FTP; вот и все )

Вот как бы я это сделал:

Ссылка на эти вопросы:

Получить последнее добавление файла в каталог

Как принудительно загрузить файл с помощью PHP

Я предлагаю два решения: первые два отдельных кода, второй один встроенный код. Только для образовательных целей


Первое решение: Быстрое и короткое использование :

(Вам может понадобиться способ или плагин для активации запуска PHP в Widget; этот плагин помогает PHP Code Widget )

<?php
$path = "download/"; 
$latest_ctime = 0;
$latest_filename = '';    
$d = dir($path);
while (false !== ($entry = $d->read())) {
  $filepath = "{$path}/{$entry}";
  // could do also other checks than just checking whether the entry is a file
  if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
    $latest_ctime = filectime($filepath);
    $latest_filename = $entry;
  }
}
echo '<a href="http://www.example.com/'. $path .$latest_filename.'">Download '. $latest_filename . '</a>';
?>

Второе решение:

(Опять же, вам может понадобиться способ или плагин для активации запуска PHP в Widget; этот плагин помогает PHP Code Widget )

A) Создание файла download.php в http://www.example.com/download.php

Добавьте следующий код:

<?php
$path = "download"; 
$latest_ctime = 0;  //ctime stands for creation time.
$latest_filename = '';    
$d = dir($path);
while (false !== ($entry = $d->read())) {
  $filepath = "{$path}/{$entry}";
  // could do also other checks than just checking whether the entry is a file
  if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
    $latest_ctime = filectime($filepath);
    $latest_filename = $entry;
  }
}
// echo $latest_filename; un-comment to debug
$file_url = 'http://www.example.com/download/'.$latest_filename;
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url); // do the double-download-dance (dirty but worky)
?>

B) в свой HTML-виджет WordPress добавьте следующий код

<?php
$path = "download"; 
$latest_ctime = 0;
$latest_filename = '';    
$d = dir($path);
while (false !== ($entry = $d->read())) {
  $filepath = "{$path}/{$entry}";
  // could do also other checks than just checking whether the entry is a file
  if (is_file($filepath) && filectime($filepath) > $latest_ctime) {
    $latest_ctime = filectime($filepath);
    $latest_filename = $entry;
  }
}
echo '<a href="http://www.example.com/download.php">Download '. $latest_filename . '</a>';
?>

Дальнейшее объяснение:

A) отвечает за автоматическую загрузку последней версии программного обеспечения.

B) отвечает за отображение имени последней сборки и создание ссылки.

Теперь вам нужно загрузить только один файл в папку /download/, которая является вашей последней сборкой (setup_1_0.zip, setup_1_1.zip, setup_1_2.zip ... и т. Д. Предлагаемое решение будет проверять дату создания независимо от файла имя.)

Важное примечание: Вы можете видеть, что последняя функция проверки файлов повторяется дважды; один раз в download.php и один раз в виджете WordPress. Потому что, если мы объединим в один файл, мы получим заголовок уже отправленной ошибки.

Доза это ответить на ваш вопрос, пожалуйста? Пожалуйста, отзыв.

...