如何通知用户保存不成功?

时间:2017-06-13 作者:Shake-the-World

保存帖子时,我有一个元框,用户必须在其中放置一些东西。如果我不接受用户输入,我将如何告诉他?

add_action(\'save_post\' , \'my_save_metaboxe_data\');

function my_save_metaboxe_data( $post_id )
{
    ....
    if ( \'something not accepted\' )
    {
        return ????? ;
    }
    ....
}
我也读过this 邮递

我个人只是写了一个return; , 但我在这方面面临的最重要的问题是,它会向用户返回以下消息:

enter image description here

如何防止此消息?

我还研究了奇妙的钩子admin_notices, 但我仍然不知道如何使用它来显示它应该在什么时候出现。

那么,我如何至少阻止上述消息?(我为WordPress开发了一个插件。)

我的问题是关于创建新custom post 对于meta boxes validations 我已经加上了。如何处理save\\u post操作以返回适当的消息,并且不总是返回“一切正常”。

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

Handling admin notice on Edit Post

当动作与posteditpost, 我们将面临redirect_post 作用有两个过滤器可用于处理post消息,redirect_post_locationpost_updated_messages (请参阅https://core.trac.wordpress.org/browser/tags/4.8/src/wp-admin/edit-form-advanced.php#L135 ).

下面是如何处理消息的示例代码。

Create new message (optional)

add_filter( \'post_updated_messages\', function( $messages ) {
    //create another message code, i.e 11
    $messages[\'post\'] = $messages[\'post\'] + array( 11 => __( \'Something Wrong\', \'textdomain\' ) );

    return $messages;
} );

Handling redirection

add_filter( \'redirect_post_location\', function( $location, $post_id ) {
    //let say the conditon is false, or you can create your code here
    $condition = false;

    if ( ! $condition ) //add 11 as code message or use in the list post messages
        $location = add_query_arg( \'message\', 11, get_edit_post_link( $post_id, \'url\' ) );


    return $location;
}, 10, 2 );
作为法典参考,代码0 将不会通知我们。通知将始终提供更新通知(绿色),如果我们需要错误或警告通知,我建议创建自己的管理员通知。我希望这有帮助。

结束

相关推荐

当限制为特定CPT时,自定义Metabox字段不保存

我有一系列的CPT,每个都有自己的自定义元数据库。它们都工作得很好——在应该展示的地方展示,省去了应该怎样做。但我发现的一个问题是,他们也都在每个管理页面上运行他们的查询(下拉菜单等),而且有很多。我将metabox选项的代码部分包装在条件代码中:function set_options() { parent::set_options(); global $pagenow; if ( \'post-new.php\' == $pagenow || \'post.php\' == $