it-swarm-pt.tech

Como lançar erro ao usuário ao salvar post

Fiz um tipo de postagem personalizado e, ao salvar seus dados adicionais, desejo verificar se existe uma publicação publicada por seu nome. Ele funciona bem se houver, mas eu gostaria de lançar algum aviso se o artigo não for encontrado.

    $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
        ???

Eu notei que há http://codex.wordpress.org/Class_Reference/WP_Error mas eu não acho que é o que eu quero desde que a depuração está definida como falsa. Erro poderia ser qualquer coisa - algum aviso usual seria bom, mas até mesmo simples alerta de javascript poderia ser bom. Atualmente ele me diz que o post é salvo com luzes verdes que não parecem corretas http://s1.postimg.org/kmjjjvuvj/image.jpg

3
Marko

Você pode usar admin_notices hook http://codex.wordpress.org/Plugin_API/Action_Reference/admin_notices

Por exemplo:

function ravs_admin_notice() {
    ?>
    <div class="error">
        <p><?php _e( 'Article with this title is not found!', 'my-text-domain' ); ?></p>
    </div>
    <?php
}

em publish_{your_custom_post_type} hook 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 );
5
Ravinder Kumar

O aviso é fácil de configurar através do gancho admin_notices. Você pode definir em cada página uma mensagem através deste gancho.

function my_admin_notice() {
    ?>
    <div class="updated">
        <p><?php _e( 'Updated!', 'my-text-domain' ); ?></p>
    </div>
    <?php
}
add_action( 'admin_notices', 'my_admin_notice' );

Ping neste gancho em sua outra construção.

else
    add_action( 'admin_notices', 'my_admin_notice' );

Verifique dentro da função my_admin_notice() o tipo de post ou use isto apenas no publish_{custom_post_type} Hook.

A cor é dependente da classe css.

enter image description here

Você encontra muito mais sobre classes e html neste plugin auxiliar .

2
bueltge