Automattic\WooCommerce\Internal\Admin\Settings\PaymentsProviders

PaymentGateway::get_settings_urlpublicWC 1.0

Get the settings URL for a payment gateway.

Метод класса: PaymentGateway{}

Хуков нет.

Возвращает

Строку. The settings URL for the payment gateway.

Использование

$PaymentGateway = new PaymentGateway();
$PaymentGateway->get_settings_url( $payment_gateway ): string;
$payment_gateway(WC_Payment_Gateway) (обязательный)
The payment gateway object.

Код PaymentGateway::get_settings_url() WC 10.5.0

public function get_settings_url( WC_Payment_Gateway $payment_gateway ): string {
	try {
		if ( method_exists( $payment_gateway, 'get_settings_url' ) && is_callable( array( $payment_gateway, 'get_settings_url' ) ) ) {
			$url = trim( (string) $payment_gateway->get_settings_url() );
			if ( ! empty( $url ) && ! wc_is_valid_url( $url ) ) {
				// Back-compat: normalize common relative admin URLs.
				$url = ltrim( $url, '/' );
				// Remove the '/wp-admin/' prefix if it exists.
				if ( 0 === strpos( $url, 'wp-admin/' ) ) {
					$url = substr( $url, strlen( 'wp-admin/' ) );
				}
				if ( 0 === strpos( $url, 'admin.php' ) || 0 === strpos( $url, '/admin.php' ) ) {
					$url = admin_url( ltrim( $url, '/' ) );
				}
			}
			if ( ! empty( $url ) && wc_is_valid_url( $url ) ) {
				return add_query_arg(
					array(
						'from' => Payments::FROM_PAYMENTS_SETTINGS,
					),
					$url
				);
			}
		}
	} catch ( Throwable $e ) {
		// Do nothing but log so we can investigate.
		SafeGlobalFunctionProxy::wc_get_logger()->debug(
			'Failed to get gateway settings URL: ' . $e->getMessage(),
			array(
				'gateway'   => $payment_gateway->id,
				'source'    => 'settings-payments',
				'exception' => $e,
			)
		);
	}

	// If we couldn't get a valid settings URL from the gateway, fall back to a general gateway settings URL.
	return Utils::wc_payments_settings_url(
		null,
		array(
			'section' => strtolower( $payment_gateway->id ),
			'from'    => Payments::FROM_PAYMENTS_SETTINGS,
		)
	);
}