更新相关帖子的“POST_MODIFIED”值

时间:2020-01-07 作者:efreeman

我有两种自定义帖子类型;\'“项目”和“活动”-创建/更新活动时,我想更新项目的元素-其中一个元素是更新“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),但这是令人困惑的地方。我正在更新的活动是昨天发布的,每当更新此活动时,项目都会使用当前日期/时间进行更新,而不是从活动中复制发布日期/时间。

有没有什么

1 个回复
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);
  }
}