使用wp_die的反向链接修改POST后的数据不正确

时间:2013-01-13 作者:user1666774

我有钩子:

function myHook( $post_ID, $post )
{
    $data = get_post_meta($post_ID, \'data\', true);
    if ($data)
    {
        _log(\'data:\' . $data);
        /* here some checks and validation */
        if (!valid)
            wp_die(\'Error\', \'Error\',  array( \'response\' => 500, \'back_link\' => true ));
    }
    else 
        wp_die(\'Error\', \'Error\',  array( \'response\' => 500, \'back_link\' => true ));
}

add_action( \'save_post\', \'myHook\', 0, 2 );
问题是,当数据不正确,用户使用back\\u链接更正数据并尝试再次发布帖子时,他的更改不会应用。旧数据被纳入分析。我怎样才能解决这个问题?

提前感谢

1 个回复
SO网友:brasofilo

我不知道为什么会出现这个问题。这个back_link 在中创建/wp-includes/functions.php. 如果there were 一个Javascript解决方案,它可以应用于wp_die. 例如:

$msg = \'Error\' . "\\n<p><a href=\'javascript:history.go(-1)\'>$back_text</a></p>";
wp_die($msg, \'Error\',  array( \'response\' => 500 ));
但这不起作用。。。

我看到的是,当浏览器返回历史时,只有标题和默认的自定义字段元框没有保留该值
内容、带有自定义字段的自定义元框、类别和其他保留值。

解决方法是将自定义字段值放入Custom Meta Box.

观察:在save_post 行动,您需要/可能会进行一些检查:

add_action( \'save_post\', \'myHook\', 0, 2 );
function myHook( $post_ID, $post )
{
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE
            or ! isset ( $_POST[\'post_type\'] )
            or \'post\' !== $_POST[\'post_type\']
            or wp_is_post_revision( $post_ID )
        )
        return; // <-- NOT the correct action, stop hook

    $post_meta = get_post_meta($post_ID, \'data\', true);
    if ($post_meta)
    {
        // _validation_function();
    }
    else 
        wp_die(\'Error, please enter Data Field.\', \'Error\',  array( \'response\' => 500, \'back_link\' => true ));
}

结束

相关推荐

hooks & filters and variables

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