更新日期:2023-05-11

後台文章列表,每一則文章下方都有預設幾個 action 功能,例如:編輯、快速編輯、移至回收桶和檢視。我們若想要針對文章做一些快速自訂的動作時,就必須加上連結,導去要處理的網址。

新增動作連結

我們要生出連結,在 admin-post.php 增加幾個要傳遞的參數,想要透過 admin_post_{$action} 這個 hook來處理,記得要加入參數 “action=名稱”。這裡我給 action 的名稱命名為 do_something。

function sig_post_row_actions( $actions, $post ){

    $url = admin_url( 'admin-post.php?post=' . $post->ID );
    $link = wp_nonce_url( add_query_arg( [ 'action' => 'do_something' ], $url ), 'my_action_nonce' );
    $actions['my_action'] = sprintf( '<a href="%1$s">%2$s</a>', esc_url( $link ), 'action_string' ) ;

    return $actions;
}
add_filter( 'post_row_actions', 'sig_post_row_actions', 10, 2 );

加入處理的 action

對應的 hook 名稱是 admin_post_{$action},我們要改成 admin_post_do_something。當鉤子鉤入後,我們做了 nonce 驗證,還有身分驗證,通過了才能做一些程式處理。

function sig_admin_post_do_something() {
    
status_header(200);

    if( wp_verify_nonce( $_REQUEST['_wpnonce'], 'my_action_nonce' ) && current_user_can('edit_posts') ){
        /// do something here
    }

    exit();
}

add_action( 'admin_post_do_something', 'sig_admin_post_do_something' );

相關補充