誰かが私を助けてくれるなら、私は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?
) );
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 ) );
}
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()
と似た働きをします。