如何使用自定义帖子类型的POST_TITLE作为分类标准

时间:2017-04-24 作者:sebastian

我有一些自定义的帖子类型来定义各种类型的内容,还有一个CPT来配置应该呈现哪些字段。配置CPT还定义了一个分类法,这样我就可以选择呈现CPT的配置
分类术语由post_title 其CPT。

将术语添加到分类法中没有问题save_post-挂钩
我的问题是更改或删除分类法的名称。预期的行为是,当我改变post_title exixtig分类术语的名称也发生了变化。此时只添加了一个新的
删除定义分类法的CP时相同。

是否有一个钩子实际上只在帖子更新时触发,我可以在哪里获取$post_before$post_after?
如果没有,我如何可靠地检查帖子是否得到更新
Thesave_post-当第一次创建帖子以及更新现有帖子时,hook会被触发,这有点烦人。

1 个回复
最合适的回答,由SO网友:Nathan Johnson 整理而成

是否有一个钩子实际上只在帖子更新时触发,我在哪里可以在更新之前和之后获得$post\\u?

你可能在找post_updated

使用情况

add_action( \'post_updated\', \'wpse_264720_post_updated\', 10, 3 );
function wpse_264720_post_updated( $post_ID, $post_after, $post_before ) {

  //* Bail if this is an autosave
  if( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) {
    return;
  }

  //* Bail if this is a post revision
  if( wp_is_post_revision( $post_ID ) ) {
    return;
  }

  //* Bail if not the correct post types
  if( ! in_array( $post_after->post_type, [ \'post-type-1\', \'post-type-2\' ] ) ) {
    return;
  }

  //* If you add/update/delete posts, remove action to avoid infinite loop
  remove_action( \'post_updated\', \'wpse_264720_post_updated\', 10 );

  //* Do something useful after the post was updated

  //* If the post was updated, remove save_post action
  remove_action( \'save_post\', \'wpse_264720_save_post\', 10, 3 );
}
//* Hypothetical function hooked to save_post
add_action( \'save_post\', \'wpse_264720_save_post\', 10, 3 );
function wpse_264720_save_post( $post_id, $post, $update ) {
  //* Bail if post was an update
  if( $update ) {
    return;
  }
  //* Do something useful on save_post
}

相关推荐