Php 从taxonomy&;日期

Php 从taxonomy&;日期,php,wordpress,attachment,Php,Wordpress,Attachment,我正在编写一个脚本,允许客户端下载在特定日期发布的特定自定义分类法中附加到帖子的所有图像 我已经创建了一个新的管理页面,其中包含一个表单,他们可以选择分类法和日期,然后提交表单 然后,表单发布到一个脚本,该脚本试图获取特定图像大小(1920px)的所有url。到目前为止,我正在运行一个循环来获取帖子,然后调用db来获取具有匹配ID的附件 但是我有点困惑于如何将这些图像的url放入一个数组中,这样用户就可以对它们进行压缩和下载 以下是迄今为止脚本的代码: (create_-zipfunction

我正在编写一个脚本,允许客户端下载在特定日期发布的特定自定义分类法中附加到帖子的所有图像

我已经创建了一个新的管理页面,其中包含一个
表单
,他们可以选择分类法和日期,然后提交表单

然后,表单发布到一个脚本,该脚本试图获取特定图像大小(1920px)的所有
url
。到目前为止,我正在运行一个循环来获取帖子,然后调用
db
来获取具有匹配
ID
的附件

但是我有点困惑于如何将这些图像的
url
放入一个数组中,这样用户就可以对它们进行压缩和下载

以下是迄今为止脚本的代码:

create_-zip
function from:) (获取图像的代码)


WordPress将返回每个图像的完整URL,因此您必须将这些URL转换为内部路径,以便将它们添加到ZIP文件中

以下是如何将WordPress URL转换为内部服务器路径:

function convert_upload_url_to_path($url) {

    $path = $url;

    $upload_dir_infos = wp_upload_dir();
    $upload_url = $upload_dir_infos['baseurl']; // http://example.com/wp-content/uploads 
    $upload_path = $upload_dir_infos['basedir']; // C:\path\to\wordpress\wp-content\uploads 

    // Step 1: remove $upload_url
    $path = str_replace($upload_url, '', $path);

    // Step 2: prepend $upload_path
    $path = $upload_path.$path;

    return $path;
}
现在,为了从每个附加图像中获取实际的URL,请使用函数

第一个参数是附件ID,第二个(可选)是所需的图像大小。它将返回图像的URL

下面是一个使用
$atts\u id
变量的示例:

$files_to_zip = array();
foreach ($atts_ids as $attachement_id) {

    $image_info = wp_get_attachment_image_src($attachement_id, 'full');
    $image_url = $image_info[0];
    $image_path = convert_upload_url_to_path($image_url);

    $files_to_zip[] = $image_path;
}

// zip 'em!
$result = create_zip($files_to_zip,'vip-download.zip');

请注意,指定
$size
参数不会为您调整图像大小。相反,它将返回最接近的可用大小。如果您想检索以最大尺寸上传的原始图像,只需指定
“full”
。通过在WordPress Dashboard>Settings>Media

中设置所需的自定义大小,您可以将WordPress设置为调整上传图像的大小(上传完成时完成)。请查看此处:这可能会有所帮助。如果图像的大小是另一个问题,您可以为不同的大小使用标记,使用文件名约定,或者使用一些gdlib/imagick来检索图像大小。谢谢,我们将对此进行检查。我只是在想,我可以调用
$wpdb
从数据库本身获取图像,因为我可以从post ID中找到每个附件。但是,查看该线程,我需要获取文件的实际路径,而不是链接。这在共享主机上是可能的吗?是的。您将始终拥有完整的路径。如果这是一种“虚拟的”或不是无关紧要的。@lucas572您好,请检查我的答案,并让我知道它是否有效;)我已经添加了有关图像大小的信息。我会考虑使用<代码> WPXPuxAddiDr()/<代码>。As/wp content/并不总是正确的:
wp\u content\u DIR
wp\u content\u URL
可以是正确的。@brasofilo谢谢你的回答!我已经更新了我的答案;)
function convert_upload_url_to_path($url) {

    $path = $url;

    $upload_dir_infos = wp_upload_dir();
    $upload_url = $upload_dir_infos['baseurl']; // http://example.com/wp-content/uploads 
    $upload_path = $upload_dir_infos['basedir']; // C:\path\to\wordpress\wp-content\uploads 

    // Step 1: remove $upload_url
    $path = str_replace($upload_url, '', $path);

    // Step 2: prepend $upload_path
    $path = $upload_path.$path;

    return $path;
}
$files_to_zip = array();
foreach ($atts_ids as $attachement_id) {

    $image_info = wp_get_attachment_image_src($attachement_id, 'full');
    $image_url = $image_info[0];
    $image_path = convert_upload_url_to_path($image_url);

    $files_to_zip[] = $image_path;
}

// zip 'em!
$result = create_zip($files_to_zip,'vip-download.zip');