我为帖子和页面制作了一个元框,同时也测试了添加的附件。但奇怪的是,钩子save_post
不会开火。
$cpts = apply_filters( \'my_filter\', array( \'post\', \'page\' ) ); // Added attachment through filter
foreach( $cpts as $pt )
{
add_meta_box(
\'my_metabox_id\',
__( \'Meta Box\' ),
array( $this, \'my_metabox_callback\' ),
$pt,
\'side\'
);
}
add_action( \'save_post\', array( $this, \'save_metabox_data\' ) );
为什么会这样?不是的
attachment
也是一种立柱类型,因此与其他立柱类型具有相同的挂钩?
SO网友:brasofilo
不完全是,附件仍然不是“完整的帖子类型”。Manny Flerumond 暗示这很好this thread:
过去几天一直在考虑这个问题:目前上传到WordPress网站的任何媒体文件都默认为发布状态inherit
, 这是媒体附件的延续。媒体已附加到某个帖子,因此它继承了帖子的状态。现在,我们开始摆脱直接将媒体附加到帖子上的做法,甚至通过允许在最新版本的WP中使用元框和分类法,使它们像帖子一样。我认为下一个合乎逻辑的步骤是提供媒体帖子状态,而不是inherit
. 我可以想到很多情况,其中,将图像或文件私有化可能会很有用。
我在这个堆栈溢出帖子中找到了解决方案:“save_post” hook not working on post type attachment. 我们得用钩子edit_attachment
:
add_action( \'edit_attachment\', array ( $this, \'save_attachment_mb_data\'), 10, 1 );
public function save_attachment_mb_data( $post_id ) {
// do_our_thing();
}
请注意,它只接受一个参数,
$post_id
, 因此,我们不能像其他post类型一样重用同一回调。除非我们放弃第二个(
$post_object
) 对于常规职位类型。