43 lines
1.6 KiB
Markdown
43 lines
1.6 KiB
Markdown
# 使用webhook自动同步woocommerce的订单
|
||
|
||
## erp-API 服务非 https 也可用配置
|
||
|
||
webhook 调用的时候默认是需要 https,但开发时本地一般不配置 ssl(或者只是自签名),所以需要在 wordpress 中添加非 https 也可用配置。
|
||
执行:在你应用的主题对应的 `functions.php` 中添加以下代码(可以放在最后)即可访问非https地址
|
||
备注:路径:比如你应用的主题是 `twentytwentyfive`,则对应的文件路径是 `<siteFolder>/app/public/wp-content/themes/twentytwentyfive/functions.php`
|
||
|
||
```php
|
||
add_filter( 'http_request_args', function( $args ) {
|
||
$args['reject_unsafe_urls'] = false;
|
||
return $args;
|
||
} );
|
||
|
||
// 跨平台获取请求头
|
||
$headers = [];
|
||
foreach ($_SERVER as $key => $value) {
|
||
if (strpos($key, 'HTTP_') === 0) {
|
||
$header_name = str_replace('_', '-', ucwords(substr($key, 5), '-'));
|
||
$headers[$header_name] = $value;
|
||
}
|
||
}
|
||
|
||
// 修正后的条件判断
|
||
if ( (isset($_GET['consumer_key']) && isset($_GET['consumer_secret'])) || isset($headers['Authorization']) ) {
|
||
$_SERVER['HTTPS'] = 'on';
|
||
if (!is_ssl()) { // WordPress内置函数检查
|
||
wp_redirect(str_replace('http://', 'https://', $_SERVER['REQUEST_URI']));
|
||
exit;
|
||
}
|
||
}
|
||
```
|
||
|
||
## 在wordpress管理端网页添加webhook
|
||
|
||
地址: <http://wp-test.local/wp-admin/admin.php?page=wc-settings&tab=advanced§ion=webhooks>
|
||
举例说明:
|
||

|
||
|
||
## 最终在订单更新时会调用地址,然后进而调用 syncSingleOrder 函数
|
||
|
||
## 备注
|