如何在保存帖子时向用户抛出错误

时间:2014-12-29 作者:Marko

我创建了一个自定义的帖子类型,在保存其附加数据时,我想检查是否存在按其名称发布的帖子。如果有,它可以正常工作,但如果找不到文章,我想发出一些通知。

    $post_exists = $wpdb->get_row("SELECT post_name FROM wp_posts WHERE post_name = \'" . $_POST[\'article_name\'] . "\' AND post_type = \'post\'", \'ARRAY_A\');
    if($post_exists)
        update_post_meta($id, \'article_name\', strip_tags($_POST[\'article_name\']));
    else
        ???
我注意到有http://codex.wordpress.org/Class_Reference/WP_Error 但我不认为这是我想要的,因为调试设置为false?。错误可以是任何东西——一些常见的通知就可以了,但即使是简单的javascript警报也可以。目前,它告诉我,这篇文章是用绿灯保存的,这似乎不对http://s1.postimg.org/kmjjjvuvj/image.jpg

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

您可以使用admin_noticeshttp://codex.wordpress.org/Plugin_API/Action_Reference/admin_notices

例如:

function ravs_admin_notice() {
    ?>
    <div class="error">
        <p><?php _e( \'Article with this title is not found!\', \'my-text-domain\' ); ?></p>
    </div>
    <?php
}
在上publish_{your_custom_post_type}http://codex.wordpress.org/Post_Status_Transitions

function on_post_publish( $ID, $post ) {
    // A function to perform actions when a {your_custom_post_type} is published.
    $post_exists = $wpdb->get_row("SELECT post_name FROM wp_posts WHERE post_name = \'" . $_POST[\'article_name\'] . "\' AND post_type = \'post\'", \'ARRAY_A\');
    if($post_exists)
        update_post_meta($id, \'article_name\', strip_tags($_POST[\'article_name\']));
    else
       add_action( \'admin_notices\', \'ravs_admin_notice\' );
}
add_action(  \'publish_{your_custom_post_type}\',  \'on_post_publish\', 10, 2 );

SO网友:bueltge

通过挂钩可以轻松设置通知admin_notices. 您可以通过此挂钩在每个页面上设置消息。

function my_admin_notice() {
    ?>
    <div class="updated">
        <p><?php _e( \'Updated!\', \'my-text-domain\' ); ?></p>
    </div>
    <?php
}
add_action( \'admin_notices\', \'my_admin_notice\' );
在else构造上Ping此挂钩。

else
    add_action( \'admin_notices\', \'my_admin_notice\' );
检查功能内部my_admin_notice() post类型或仅在publish_{custom_post_type}

颜色依赖于css类。

enter image description here

您可以在这里找到更多关于类和html的信息helper plugin.

结束

相关推荐

Displaying oEmbed errors?

有时,通过oEmbed嵌入项目是不可能的,例如,当YouTube视频已禁用嵌入时。The oEmbed service will return a 401 Unauthorized, 并且不会转换代码。有没有办法通知用户这一点?当前的工作流是非直观的(至少对我来说),我更喜欢在WordPress页面上,或者更好的是,在编辑器中显示一条消息,说明对象无法嵌入。