You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

WordPress获取文章发布年月异常:返回当前年月而非目标日期

解决WordPress中wp_upload_dir获取文章发布年月而非当前年月的问题

首先,咱们来搞定你遇到的这个问题:你期望wp_upload_dir()返回当前文章发布年月对应的上传目录,但现在拿到的却是系统当前的年月,主要有两个关键问题需要修正:

问题1:get_the_date()的参数未加引号

你调用get_the_date(Y,m)时,没有给格式参数加引号,PHP会把Ym当作常量来解析(如果没定义这些常量,会默认转为字符串,但这是不规范的写法,容易出问题)。正确的做法是给格式字符串加上单引号或双引号。

问题2:get_the_date()的上下文可能未关联当前文章

如果你的代码不在文章主循环内,或者没有正确引用当前文章的$post对象,get_the_date()会无法获取到目标文章的发布日期,转而返回当前时间。

解决方案1:在文章循环内的正确写法

如果你的代码是在文章循环里执行的,直接修正参数格式即可:

// 确保在文章循环内
$date = get_the_date('Y/m'); // 用Y/m格式直接匹配wp_upload_dir的子目录格式
$delete_file = wp_upload_dir($date);
print_r($delete_file);

解决方案2:循环外的可靠写法

如果代码不在循环内,需要手动关联当前文章对象,用get_post_time()更稳妥:

global $post; // 引入当前文章的全局对象
// 获取目标文章的发布日期,格式为YYYY/MM
$post_date = get_post_time('Y/m', false, $post);
$delete_file = wp_upload_dir($post_date);
print_r($delete_file);

补充说明

wp_upload_dir()接受的日期参数格式为YYYY/MM,这样它就能准确返回对应年月的上传目录信息(包括subdir字段)。测试一下上面的代码,你应该就能得到期望的2018/12或对应文章的发布年月了。

内容的提问来源于stack exchange,提问作者A3O

火山引擎 最新活动