web-dev-qa-db-ja.com

Admin WP_List_Table内にadmin Ajaxを実装する方法

誰かが私を助けてくれるなら、私はWordPressに不慣れです。

パラメータajaxは "true"ですがドキュメントにあります。 WP_List_Tableクラスを使用してAjaxを実装する方法は言われていませんか?

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

Ajaxがtrueに設定されている場合、親の__construct argsでjs_varsがページのフッターに出力されます。

/**
     * 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' ) );
        }
    }

フッターに出力されるデフォルトのJavaScript変数は、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

WP_List_TableクラスMethods を見てきましたか? ajax_response()...があります.

  • ajax_response() - あなたのカスタム許可ルールセットを実装するためにそれを使います

    public function ajax_response()
    {
        return current_user_can( 'manage_options' );
    }
    
  • ajax_response() - あなたのajaxコールバック/アクションを処理します。
  • _js_vars() - あなたがあなたのカスタムajaxコールバックの中で使いたいすべての変数。 wp_localize_script()と似た働きをします。
1
kaiser