“SAVE_POST”挂钩在WP 3.5中不起作用

时间:2012-12-12 作者:David Gard

我曾经在“编辑媒体”屏幕上添加了一个额外选项(使用attachment_fields_to_edit 挂钩,然后使用保存attachment_fields_to_save). 然而,我今天已经更新到了3.5,编辑媒体屏幕现在基于编辑帖子屏幕,因此这些挂钩在这种情况下不再起作用。

为了克服这个问题,我使用add_metabox(). 将显示metabox,但问题在于保存数据。

由于函数没有按我的预期工作,我想我应该输出$_POST 看看发生了什么。但是,函数似乎连接到save_post 更新媒体时未运行。

这是我的密码。有没有人能告诉我,我是不是走错了路,或者是否有一个我不知道的不同的钩子?谢谢

/** Register hooks for creating a metabox on the Edit Media screen and then saving the values */
if(current_user_can(\'manage_options\')) :

    /** Add the option for including the image in the slideshow on the front page */
    add_action(\'add_meta_boxes\', \'add_front_page_slideshow_option\');

    /** Save the \'_include_on_front\' data */
    add_action(\'save_post\', \'save_front_page_slideshow_option\');

endif;

/**
 * Saves values from the \'Include in Front Page Sideshow\' meta box when the users Updates the media
 */
function save_front_page_slideshow_option($post_id){

    echo \'<pre>\'; print_r($_POST); echo \'</pre>\';
    die();

    /** Check the security nonce to ensure we have the proper authorisation  */
    if(!wp_verify_nonce($_POST[\'slideshow_noncename\'], \'include-on-front-nonce\')) :
        return false;
    endif;

    /** Ensure that the user has the correct permissions */
    if(!current_user_can(\'edit_post\', $post_id)) :
        return false;
    endif;

    /** Check if this is an auto save routine. If it is our form has not been submitted, so we dont want to do anything */
    if(defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE) :
        return false;
    endif;

    /** Update the \'_include_on_front\' post meta field */
    if($_POST[\'include_on_front\']) :
        update_post_meta($post_id, \'_include_on_front\', $_POST[\'include_on_front\']);
    else : 
        delete_post_meta($post_id, \'_include_on_front\');
    endif;

}

2 个回复
最合适的回答,由SO网友:jontro 整理而成

仍调用attachment\\u fields\\u to\\u save。

刚刚在我的wordpress 3.5上试用过。安装和以下代码在保存图像时终止wordpress。

add_filter(\'attachment_fields_to_save\', function() {
    die(\'attachment_fields_to_save\');
});

SO网友:dave

我也有类似的问题。我想我已经把问题缩小到临时支票了。看来这还没过去。你弄明白了吗?我发现如果我删除nonce check,它就会工作。但不知道为什么会这样。

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴