支付网关添加语言 url (Wordpress/Polylang/Woocommerce)
Payment Gateway adding language url (Wordpress/Polylang/Woocommerce)
我有一个 Wordpress 网站 运行 Woocommerce。该网站提供 3 种不同的语言版本。我 运行 Polylang 插件。我有一个名为 Europabank 的支付网关。当我订购产品时,select 这个网关一切正常。我可以支付给定的金额并且支付成功。但在付款后,用户会被重定向到网站确认页面。该插件使用以下代码处理此问题:
'feedbackurl' => WC ()->api_request_url ( 'WC_Gateway_EuropabankMpi' ),
'redirecturl' => WC ()->api_request_url ( 'WC_Gateway_EuropabankMpi' ),
付款后 url 将如下所示:
http://my-website-url.com/wc-api/WC_Gateway_EuropabankMpi/?somedata
当我将 url 更改为:(添加 /en/ 时,此 url 将给出 404 错误,因为未提供语言
http://my-website-url.com/en/wc-api/WC_Gateway_EuropabankMpi/?somedata
会起作用。所以我需要将语言代码添加到 url。我可以做什么:
<?php $currentlang = get_bloginfo('language');
switch ($currentlang) {
case "nl-NL":
echo "/nl/";
break;
case "fr-FR":
echo '/fr/';
break;
case "en-GB":
echo '/en/';
break;
default: echo '/en/';
};?>
问题
我必须在哪里添加此代码?我不介意直接更改插件,因为它不需要更新,但如果您有更新证明解决方案,那显然会更好。
插件版本和链接
- WordPress:版本 4.4.1
- Woocommerce:版本 2.4.12
- Polylang : 版本 1.7.12
- Europabank MPI : 版本 1.0
感谢Rophil_PHPBeginner指出正确的放置位置。
woocommerce.php 中的工作代码:
$currentlang = get_bloginfo('language');
switch ($currentlang) {
case "nl-NL":
$lang = "/nl";
break;
case "fr-FR":
$lang = '/fr';
break;
case "en-GB":
$lang = '/en';
break;
default: $lang = '/en';
};
if ( strstr( get_option( 'permalink_structure' ), '/index.php/' ) ) {
$api_request_url = trailingslashit( home_url( $lang . '/index.php/wc-api/' . $request, $scheme ) );
} elseif ( get_option( 'permalink_structure' ) ) {
$api_request_url = trailingslashit( home_url( $lang . '/wc-api/' . $request, $scheme ) );
} else {
$api_request_url = add_query_arg( 'wc-api', $request, trailingslashit( home_url( '', $scheme ) ) );
}
return esc_url_raw( $api_request_url );
}
更新
Woocommerce 现在提供了一个过滤器来解决这个问题
https://github.com/woothemes/woocommerce/commit/56d303f4d3139336d539514f9dc15efda0a0381c
我有一个 Wordpress 网站 运行 Woocommerce。该网站提供 3 种不同的语言版本。我 运行 Polylang 插件。我有一个名为 Europabank 的支付网关。当我订购产品时,select 这个网关一切正常。我可以支付给定的金额并且支付成功。但在付款后,用户会被重定向到网站确认页面。该插件使用以下代码处理此问题:
'feedbackurl' => WC ()->api_request_url ( 'WC_Gateway_EuropabankMpi' ),
'redirecturl' => WC ()->api_request_url ( 'WC_Gateway_EuropabankMpi' ),
付款后 url 将如下所示:
http://my-website-url.com/wc-api/WC_Gateway_EuropabankMpi/?somedata
当我将 url 更改为:(添加 /en/ 时,此 url 将给出 404 错误,因为未提供语言
http://my-website-url.com/en/wc-api/WC_Gateway_EuropabankMpi/?somedata
会起作用。所以我需要将语言代码添加到 url。我可以做什么:
<?php $currentlang = get_bloginfo('language');
switch ($currentlang) {
case "nl-NL":
echo "/nl/";
break;
case "fr-FR":
echo '/fr/';
break;
case "en-GB":
echo '/en/';
break;
default: echo '/en/';
};?>
问题
我必须在哪里添加此代码?我不介意直接更改插件,因为它不需要更新,但如果您有更新证明解决方案,那显然会更好。
插件版本和链接
- WordPress:版本 4.4.1
- Woocommerce:版本 2.4.12
- Polylang : 版本 1.7.12
- Europabank MPI : 版本 1.0
感谢Rophil_PHPBeginner指出正确的放置位置。
woocommerce.php 中的工作代码:
$currentlang = get_bloginfo('language');
switch ($currentlang) {
case "nl-NL":
$lang = "/nl";
break;
case "fr-FR":
$lang = '/fr';
break;
case "en-GB":
$lang = '/en';
break;
default: $lang = '/en';
};
if ( strstr( get_option( 'permalink_structure' ), '/index.php/' ) ) {
$api_request_url = trailingslashit( home_url( $lang . '/index.php/wc-api/' . $request, $scheme ) );
} elseif ( get_option( 'permalink_structure' ) ) {
$api_request_url = trailingslashit( home_url( $lang . '/wc-api/' . $request, $scheme ) );
} else {
$api_request_url = add_query_arg( 'wc-api', $request, trailingslashit( home_url( '', $scheme ) ) );
}
return esc_url_raw( $api_request_url );
}
更新
Woocommerce 现在提供了一个过滤器来解决这个问题 https://github.com/woothemes/woocommerce/commit/56d303f4d3139336d539514f9dc15efda0a0381c