无法获取所需的Metabox数据保存帮助

时间:2014-05-20 作者:LoomyBear

我正在尝试在一个创建/编辑后的页面上创建元框。我面临的问题是:1。当我从头开始创建帖子时,元框中的数据按预期保存。当我尝试用新的元框数据更新现有帖子时,数据不会保存。

我尝试了几个动作挂钩wordpress docs 而且它们似乎都不起作用。请检查以下代码:

<?
    add_action(\'save_post\',\'callback\');       // works when a post is created from scratch
    add_action(\'update_post\',\'callback\');     // doesn\'t work
    add_action(\'pre_post_update\',\'callback\'); // doesn\'t work
    add_action(\'publish_post\',\'callback\');    // doesn\'t work

    function callback( $post_ID ) {
        echo "THE POST IS SAVED";

        // Code for saving metabox here
        ...
    };
看不出这件事没有按预期工作的任何原因。如果有人遇到同样的问题,请帮助!我绝望了祝你今天愉快!

1 个回复
SO网友:Nabil Kadimi

这个save_post 钩子是您唯一需要的,而且,您的回调函数缺少一个参数,请检查以下示例:

/**
 * Save post metadata when a post is saved.
 *
 * @param int $post_id The ID of the post.
 */
function save_book_meta( $post_id ) {

    /*
     * In production code, $slug should be set only once in the plugin,
     * preferably as a class property, rather than in each function that needs it.
     */
    $slug = \'book\';

    // If this isn\'t a \'book\' post, don\'t update it.
    if ( $slug != $_POST[\'post_type\'] ) {
        return;
    }

    // - Update the post\'s metadata.

    if ( isset( $_REQUEST[\'book_author\'] ) ) {
        update_post_meta( $post_id, \'book_author\', sanitize_text_field( $_REQUEST[\'book_author\'] ) );
    }

    if ( isset( $_REQUEST[\'publisher\'] ) ) {
        update_post_meta( $post_id, \'publisher\', sanitize_text_field( $_REQUEST[\'publisher\'] ) );
    }

    // Checkboxes are present if checked, absent if not.
    if ( isset( $_REQUEST[\'inprint\'] ) ) {
        update_post_meta( $post_id, \'inprint\', TRUE );
    } else {
        update_post_meta( $post_id, \'inprint\', FALSE );
    }
}
add_action( \'save_post\', \'save_book_meta\' );
示例可以在Codex page for the save_post action hook.

结束

相关推荐

Custom Post Row Actions

我偶然发现this question 在写这个问题的时候。我有一个问题是关于这个问题的。我发现你用的是get_delete_post_link 筛选为我的操作创建一个新的url(或一个类似的函数——在任何情况下,我都会将该函数与布尔值一起使用)。唯一的问题是,I don\'t know how to capture the event now. 考虑到我在谷歌上找不到很多关于行后操作的例子,我将不胜感激-/public function _wp_filter_get_delete_post_link( $