Wordpress массовое мусорное действие с использованием таблицы, унаследованной от WP Posts List List Table - PullRequest
1 голос
/ 11 ноября 2011

В плагине, который показывает таблицу сообщений пользовательского типа, я хотел добавить опцию для массовых действий. Помимо флажков я отображал элемент управления для массовых действий, но когда я нажимаю Apply, ничего не происходит.

Полагаю, это должно быть действие, но я не мог найти какой. Я пытался trash_post, но это не получило.

Как мне выполнить массовое удаление в любом случае, поскольку я понятия не имею, нахожусь ли я даже на правильном пути.

1 Ответ

2 голосов
/ 12 ноября 2011

Вы должны будете определить массив массовых действий в вашем классе, который расширяет WP_List_Table, тогда в вашей функции отображения вам нужно будет определить отдельные действия.

function get_bulk_actions() {
        $actions = array();

        if ( $this->is_trash )
            $actions['untrash'] = __( 'Restore' );
        else
            $actions['edit'] = __( 'Edit' );

        if ( $this->is_trash || !EMPTY_TRASH_DAYS )
            $actions['delete'] = __( 'Delete Permanently' );
        else
            $actions['trash'] = __( 'Move to Trash' );

        return $actions;
    }

Вы можете использовать wp_posts_list_table в качестве примера того, как это делается:

$actions = array();
                if ( $can_edit_post && 'trash' != $post->post_status ) {
                    $actions['edit'] = '<a href="' . get_edit_post_link( $post->ID, true ) . '" title="' . esc_attr( __( 'Edit this item' ) ) . '">' . __( 'Edit' ) . '</a>';
                    $actions['inline hide-if-no-js'] = '<a href="#" class="editinline" title="' . esc_attr( __( 'Edit this item inline' ) ) . '">' . __( 'Quick&nbsp;Edit' ) . '</a>';
                }
                if ( current_user_can( $post_type_object->cap->delete_post, $post->ID ) ) {
                    if ( 'trash' == $post->post_status )
                        $actions['untrash'] = "<a title='" . esc_attr( __( 'Restore this item from the Trash' ) ) . "' href='" . wp_nonce_url( admin_url( sprintf( $post_type_object->_edit_link . '&amp;action=untrash', $post->ID ) ), 'untrash-' . $post->post_type . '_' . $post->ID ) . "'>" . __( 'Restore' ) . "</a>";
                    elseif ( EMPTY_TRASH_DAYS )
                        $actions['trash'] = "<a class='submitdelete' title='" . esc_attr( __( 'Move this item to the Trash' ) ) . "' href='" . get_delete_post_link( $post->ID ) . "'>" . __( 'Trash' ) . "</a>";
                    if ( 'trash' == $post->post_status || !EMPTY_TRASH_DAYS )
                        $actions['delete'] = "<a class='submitdelete' title='" . esc_attr( __( 'Delete this item permanently' ) ) . "' href='" . get_delete_post_link( $post->ID, '', true ) . "'>" . __( 'Delete Permanently' ) . "</a>";
                }
                if ( $post_type_object->public ) {
                    if ( in_array( $post->post_status, array( 'pending', 'draft', 'future' ) ) ) {
                        if ( $can_edit_post )
                            $actions['view'] = '<a href="' . esc_url( add_query_arg( 'preview', 'true', get_permalink( $post->ID ) ) ) . '" title="' . esc_attr( sprintf( __( 'Preview &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'Preview' ) . '</a>';
                    } elseif ( 'trash' != $post->post_status ) {
                        $actions['view'] = '<a href="' . get_permalink( $post->ID ) . '" title="' . esc_attr( sprintf( __( 'View &#8220;%s&#8221;' ), $title ) ) . '" rel="permalink">' . __( 'View' ) . '</a>';
                    }
                }

                $actions = apply_filters( is_post_type_hierarchical( $post->post_type ) ? 'page_row_actions' : 'post_row_actions', $actions, $post );
                echo $this->row_actions( $actions );

                get_inline_data( $post );
                echo '</td>';
            break;

Вы также должны добавить JavaScript, чтобы сделать запросы AJAX и заполнитьв данных из скрытого inline_ div.Посмотрите или повторно используйте код из inline-edit-post-dev.js .

...