我有两种自定义帖子类型;\'“项目”和“活动”-创建/更新活动时,我想更新项目的元素-其中一个元素是更新“post\\u modified”值(在网站的其他地方,我按“modified”时间排序项目帖子类型,以便在存档中优先考虑最近参与的项目)
这是我目前拥有的:
// update project updated time on activity save
add_action(\'save_post_cpt_activities\', \'update_project_update_time\', 10, 1);
function update_project_update_time($post_id) {
// get the associated project
$project = get_field(\'project\', $post_id);
if( $project ) {
$time = get_the_date(\'Y-m-d H:i:s\', $post_id);
// echo $time;
// die();
wp_update_post(
[
\'ID\' => $project,
\'post_modified\' => $time,
\'post_modified_gmt\' => get_gmt_from_date( $time )
]
);
}
}
钩子触发得很好(调试“die”回显正确的发布日期,我尝试回显wp\\u update\\u post的响应(返回正确的发布ID),但这是令人困惑的地方。我正在更新的活动是昨天发布的,每当更新此活动时,项目都会使用当前日期/时间进行更新,而不是从活动中复制发布日期/时间。
有没有什么
SO网友:efreeman
在输入问题时产生了脑电波。。更新帖子时会触发其他操作,例如post_updated 这自然会更新post\\u修改后的时间戳。
相反,我决定将活动的修改时间保存为元值,并将对其进行排序,保留post\\u modified功能不变。
修剪功能:
function update_project_update_time($post_id) {
// get the associated project
$project = get_field(\'project\', $post_id);
if( $project ) {
$time = get_the_date(\'Y-m-d H:i:s\', $post_id);
update_post_meta($project, \'last_modified\', $time);
}
}