web-dev-qa-db-fra.com

Comment implémenter admin Ajax dans un admin WP_List_Table?

Je suis nouveau sur WordPress si quelqu'un m'aide, je l'apprécierai beaucoup.

Il existe un paramètre ajax "true" mais dans la documentation. on n'a pas dit comment implémenter Ajax en utilisant WP_List_Table Class?

parent::__construct( array(
            'singular'  => 'user',     //singular name of the listed records
            'plural'    => 'users',    //plural name of the listed records
            'ajax'      => true        //does this table support ajax?
        ) );
5
Babo

Dans l'argument parent __construct si ajax est défini sur true, js_vars sera affiché dans le pied de page de la page.

/**
     * Constructor. The child class should call this constructor from it's own constructor
     *
     * @param array $args An associative array with information about the current table
     * @access protected
     */
    function __construct( $args = array() ) {
        $args = wp_parse_args( $args, array(
            'plural' => '',
            'singular' => '',
            'ajax' => false
        ) );

        $screen = get_current_screen();

        add_filter( "manage_{$screen->id}_columns", array( &$this, 'get_columns' ), 0 );

        if ( !$args['plural'] )
            $args['plural'] = $screen->base;

        $args['plural'] = sanitize_key( $args['plural'] );
        $args['singular'] = sanitize_key( $args['singular'] );

        $this->_args = $args;

        if ( $args['ajax'] ) {
            // wp_enqueue_script( 'list-table' );
            add_action( 'admin_footer', array( &$this, '_js_vars' ) );
        }
    }

Les variables javascript par défaut qui sont affichées dans le pied de page sont définies dans la fonction js_vars:

/**
     * Send required variables to JavaScript land
     *
     * @access private
     */
    function _js_vars() {
        $current_screen = get_current_screen();

        $args = array(
            'class'  => get_class( $this ),
            'screen' => array(
                'id'   => $current_screen->id,
                'base' => $current_screen->base,
            )
        );

        printf( "<script type='text/javascript'>list_args = %s;</script>\n", json_encode( $args ) );
    }
5
Chris_O

Avez-vous déjà consulté un aperçu de la classe Méthodes WP_List_Table ? Il y a ajax_response()...

  • ajax_response() - utilisez-le pour implémenter votre jeu de règles d'autorisations personnalisées

    public function ajax_response()
    {
        return current_user_can( 'manage_options' );
    }
    
  • ajax_response() - gère vos callbacks/actions ajax.
  • _js_vars() - toutes les variables que vous souhaitez utiliser dans vos rappels ajax personnalisés. Fonctionne comme wp_localize_script().
1
kaiser