如何通过WordPress文章标题查询对应post ID,以批量更新视频文章发布日期?
实现方案
WordPress原生提供了两种常用方式实现通过文章标题精准匹配获取对应post ID,适配不同的使用场景:
1. PHP代码集成(适用于主题/插件自定义开发场景)
推荐优先使用WP_Query实现,兼容所有WordPress版本,且可灵活适配自定义文章类型:
// 填入从xlsx中读取的文章标题 $target_title = '你的视频文章标题'; $post_query_args = [ // 替换为你的视频文章对应的 post type,默认文章填'post' 'post_type' => 'post', // 可按需调整为你需要匹配的文章状态,比如draft/pending等 'post_status' => 'publish', 'title' => $target_title, 'posts_per_page' => 1, // 仅返回ID字段,降低查询开销 'fields' => 'ids' ]; $post_query = new WP_Query($post_query_args); $matched_post_id = 0; if ($post_query->have_posts()) { $matched_post_id = $post_query->posts[0]; // 拿到ID后即可执行更新发布日期的逻辑 } // 重置查询数据,避免影响后续主查询 wp_reset_postdata();
注意:如果你使用的WordPress版本低于6.2,也可以用get_page_by_title()快速查询,该函数自6.2版本起已被官方废弃:
// 第三个参数替换为实际的视频文章post type $matched_post = get_page_by_title($target_title, OBJECT, 'post'); if ($matched_post) { $matched_post_id = $matched_post->ID; }
拿到post ID后,你可以用以下逻辑更新文章发布日期:
// 替换为从xlsx中读取的新发布日期,格式为Y-m-d H:i:s $new_publish_date = '2024-05-20 14:30:00'; wp_update_post([ 'ID' => $matched_post_id, 'post_date' => $new_publish_date, 'post_date_gmt' => get_gmt_from_date($new_publish_date) ]);
2. WP-CLI命令行实现(适用于批量处理场景)
如果你需要批量处理xlsx中的大量条目,可将xlsx导出为CSV后配合WP-CLI完成操作,单条查询post ID的命令如下:
wp post list --post_type=post --title="你的文章标题" --field=ID --posts_per_page=1
命令执行后会直接输出匹配到的文章ID,可配合shell脚本完成批量查询+更新操作。
注意事项
- 批量操作前务必先备份站点数据库,避免误操作导致数据丢失
- 建议先选取3-5条xlsx数据做测试,确认标题匹配、日期更新逻辑均符合预期后再执行全量操作
- 若站点文章量超过1万,建议给查询逻辑添加缓存,避免重复查询拖慢执行速度
内容的提问来源于stack exchange,提问作者brice briere
相关产品推荐
相关产品推荐

