web-dev-qa-db-ja.com

投稿削除後にカスタム投稿通知を追加

投稿がゴミ箱から削除された後にカスタム情報通知を追加しようとしていますが、うまくいっていません。

add_action( 'delete_post', 'show_admin_notice' );
/**
 * Show admin notice after post delete
 *
 * @since 1.0.0.
 */
function show_admin_notice(){
    add_action( 'admin_notices', 'show_post_order_info' );
}

/**
 * Display notice when user deletes the post
 *
 * When user deletes the post, show the notice for the user
 * to go and refresh the post order.
 *
 * @since 1.0.0
 */
function show_post_order_info() {
    $screen = get_current_screen();

    if ( $screen->id === 'edit-post' ) {
        ?>
        <div class="notice notice-info is-dismissible">
            <p><?php echo esc_html__( 'Please update the ', 'nwl' ) . '<a href="' . esc_url( admin_url( 'edit.php?page=post-order' ) ). '">' . esc_html__( 'post order settings', 'nwl' ) . '</a>' . esc_html__( ' so that the posts would be correctly ordered on the front pages.', 'nwl' ); ?></p>
        </div>
        <?php
    }
}

私は明らかにここに何かが足りないのですが、私はグーグルで何を見つけることができませんでした。

admin_noticesフックを使うだけで、私の投稿管理ページに常に通知が表示されます。

3
dingo_d

一括数の確認

bulk countsをチェックして、投稿がdeletedであったかどうかを確認できます。

add_filter( 'bulk_post_updated_messages', function( $bulk_messages, $bulk_counts )
{
    // Check the bulk counts for 'deleted' and add notice if it's gt 0
    if( isset( $bulk_counts['deleted'] ) && $bulk_counts['deleted'] > 0 )
        add_filter( 'admin_notices', 'wpse_243594_notice' );

    return $bulk_messages;
}, 10, 2 );

カスタム通知でコールバックを次のように定義します。

function wpse_243594_notice()
{
    printf( 
        '<div class="notice notice-info is-dismissible">%s</div>',
        esc_html__( 'Hello World!', 'domain' )
    );
}

一括カウントには、updatedlockedtrashed、およびuntrashedに関する追加情報が含まれています。

出力例

custom notice on post delete 

あなたがこれをあなたのニーズに合わせてさらに調整できることを願っています!

3
birgire

私はこれが解決すると思います:

if(isset($_GET['post_status']) && $_GET['post_status']=='trash'){
     add_action( 'admin_notices', 'show_post_order_info' );
}
0
T.Todua