如何在保存POST后显示错误消息?

时间:2018-03-05 作者:FilBr

我正在编写一个插件,我想知道如何在元字段更新和页面重新加载后显示错误消息。我必须检查ID字段是否唯一,如果不唯一,则显示一条错误消息,告诉用户问题所在,而不是不更新值。

1 个回复
SO网友:Brett

正如jdm2112所提到的,WordPress提供了save_post 一旦柱子被保存,就会开火的钩子。由于保存帖子时需要运行验证逻辑,因此此挂钩(或其dynamic counterpart) 应该在您的解决方案中使用。至于在验证失败时显示错误消息admin_notices 钩子是完美的选择。

粗略的解决方案可能如下所示:

function filbr_validate_id_meta_field( $post_id ) {
    // Skip post revisions
    if ( wp_is_post_revision( $post_id ) ) {
        return;
    }

    $id = get_post_meta( $post_id, \'id\', true );

    if ( ! filbr_id_unique( $id ) ) {
        add_action( \'admin_notices\', \'filbr_invalid_id_error\' );
        // Optionally delete invalid meta value
        delete_post_meta( $post_id, \'id\' );
    }
}
add_action( \'save_post\', \'filbr_validate_id_meta_field\' );

function filbr_id_unique( $id ) {
    // ... check uniqueness of provided ID
}

function filbr_invalid_id_error() {
    ?>
    <div class="notice notice-error">
        <p><?php _e( \'The ID you entered is not unique\', \'your-text-domain\' ); ?></p>
    </div>
    <?php
}
您需要对其进行调整,使其按预期工作。

如果你有任何问题,请告诉我!

结束

相关推荐

Creating custom login errors

我希望能够创建自定义登录错误。例如,如果用户未登录就访问了受限区域,那么我将重定向到wp-login.php?ref=access 我想输出Restricted area, please login to continue. 或者类似的东西。你知道怎么做吗。我发现有过滤器login_errors 但是我在出现的代码中找不到其他地方,除了登录页面本身。最后,我真的不想为了做到这一点而改变任何核心文件。我花费了大量的时间和精力来确保wordpress的核心完全没有受到影响,以便我可以升级它。有人有什么想法吗?