Automattic\WooCommerce\Internal\Admin\Notes

WooCommercePayments::install_on_action()publicWC 1.0

Install & activate WooCommerce Payments plugin, and redirect to setup.

Method of the class: WooCommercePayments{}

No Hooks.

Return

null. Nothing (null).

Usage

$WooCommercePayments = new WooCommercePayments();
$WooCommercePayments->install_on_action();

WooCommercePayments::install_on_action() code WC 8.7.0

public function install_on_action() {
	// TODO: Need to validate this request more strictly since we're taking install actions directly?
	if (
		! isset( $_GET['page'] ) ||
		'wc-admin' !== $_GET['page'] ||
		! isset( $_GET['action'] ) ||
		'setup-woocommerce-payments' !== $_GET['action']
	) {
		return;
	}

	$data_store = Notes::load_data_store();

	// We already have this note? Then mark the note as actioned.
	$note_ids = $data_store->get_notes_with_name( self::NOTE_NAME );
	if ( empty( $note_ids ) ) {
		return;
	}

	$note_id = array_pop( $note_ids );
	$note    = Notes::get_note( $note_id );
	if ( false === $note ) {
		return;
	}
	$action = $note->get_action( 'get-started' );
	if ( ! $action ||
		( isset( $action->nonce_action ) &&
			(
				empty( $_GET['_wpnonce'] ) ||
				! wp_verify_nonce( wp_unslash( $_GET['_wpnonce'] ), $action->nonce_action ) // phpcs:ignore WordPress.Security.ValidatedSanitizedInput
			)
		)
	) {
		return;
	}

	if ( ! current_user_can( 'install_plugins' ) ) {
		return;
	}

	$this->install_and_activate_wcpay();

	// WooCommerce Payments is installed at this point, so link straight into the onboarding flow.
	$connect_url = add_query_arg(
		array(
			'wcpay-connect' => '1',
			'_wpnonce'      => wp_create_nonce( 'wcpay-connect' ),
		),
		admin_url()
	);
	wp_safe_redirect( $connect_url );
	exit;
}