SAVE_POST不使用附件

时间:2013-10-06 作者:brasofilo

我为帖子和页面制作了一个元框,同时也测试了添加的附件。但奇怪的是,钩子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 也是一种立柱类型,因此与其他立柱类型具有相同的挂钩?

1 个回复
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) 对于常规职位类型。

结束

相关推荐

用户选择内部定制Metabox

我正在使用人造的自定义元框框架(https://github.com/humanmade/Custom-Meta-Boxes). 我想在我的metabox中添加一个select下拉列表,该下拉列表由我的WP站点上具有多个角色的用户填充。引用此帖子:Get multiple roles with get_users我想到了:add_filter( \'cmb_meta_boxes\', \'users_metabox\' ); function eusers_metabox( array