web-dev-qa-db-ja.com

投稿を保存するときにユーザーにエラーをスローする方法

カスタム投稿タイプを作成し、その追加データを保存する際に、公開された投稿がその名前で存在するかどうかを確認します。あれば問題なく動作しますが、記事が見つからない場合は通知します。

    $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

3
Marko

admin_notices hook http://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 );
5
Ravinder Kumar

通知はフック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()関数内で投稿タイプを確認するか、これをpublish_{custom_post_type}フックでのみ使用してください。

色はcssクラスからの依存関係です。

enter image description here

この ヘルパープラグイン には、クラスとHTMLについての詳細があります。

2
bueltge