我想在WordPress小部件中显示下载链接。要下载的文件位于站点根目录的 download 子文件夹中,因此可以通过FTP上载。文件名和下载链接显示的文本应存储在同一文件夹中的简单文本文件中。
假设WordPress安装在www.mysite.com
上。文件名为setup_1_0.zip
,链接显示为Setup 1.0
。
只要我也可以通过FTP上传该文件,我对文件格式的保存方式是开放的。
如何在自定义HTML小部件中嵌入此信息,以获取包含从该文件中获取的文本的有效下载链接?
答案 0 :(得分:1)
根据您的逻辑。 您正在尝试自动执行最新软件版本的下载过程。
您不想手动更新内容,而只想在/download/
文件夹中上传最新版本。 (仅使用FTP删除最新版本;全部)
我就是这样做的:
引用这些问题:
Get the latest file addition in a directory
How to force file download with PHP
我提出两种解决方案:前两个separte代码,Second One内联代码。 仅用于教育目的
第一个解决方案:快速和短暂使用:
(您可能需要一种方法或插件来激活Widget中运行的PHP;此插件有助于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>';
?>
第二个解决方案:
(同样,您可能需要一种方法或插件来激活Widget中运行的PHP;此插件有助于PHP Code Widget)
A)在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)
?>
WordPress HTML小部件中的B)添加以下代码
<?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 Widget中。因为如果我们在一个文件中合并,我们将得到标头已发送错误。
请回答你的问题吗?请回复。