web-dev-qa-db-ja.com

カスタム投稿リストにカスタム列を追加する

カスタム投稿(書籍)リストに列(電子メールの送信など)を追加します。各行にボタン(送信)があるはずです。クリックすると電子メールを送信します。

私は見てきましたフック manage_posts_custom_column カスタム列を追加するが、このフックは注目の画像などの列として投稿メタを追加するだけです。

これを行う方法は、私を助けてください。


スクリーンショット

enter image description here 

2
Bhuvnesh Gupta

books投稿テーブルに新しい列を追加する

ここで私達はフィルターを使用することができます

manage_{$post->post_type}_posts_custom_column
manage_{$post->post_type}_posts_columns

投稿タイプがbooksの場合

manage_books_posts_custom_column
manage_books_posts_columns

send_email列の各行にボタンを表示する方法の例を示します。

/**
 * Books Post Table: Display a utton in each row in the 'send_email' column
 */
add_action( 'manage_books_posts_custom_column', function ( $column_name, $post_id ) 
{
    if ( $column_name == 'send_email')
        printf( '<input type="button" value="%s" />', esc_attr( __( 'Send Email' ) ) );

}, 10, 2 );

send_email列を追加するために使用できます。

/**
 * Books Post Table: Add the 'send_email' column
 */
add_filter('manage_books_posts_columns', function ( $columns ) 
{
    if( is_array( $columns ) && ! isset( $columns['send_email'] ) )
        $columns['send_email'] = __( 'Send Email' );     
    return $columns;
} );

また、列幅を制限することもできます。

/**
 * Limit the 'send_email' column width
 */
add_action( 'admin_print_styles-edit.php', function()
{        
    echo '<style> .column-send_email { width: 100px; }</style>';
} );

これが出力例です。

button 

その後、ボタンがどのように機能するかを実装する必要があります。

ps:あなたの質問のその部分は、新しい別の質問として役立てられるので、私は私の答えから2番目の部分を削除しました。

7
birgire