seravo/woo-pakettikauppa

集成 Pakettikauppa 与 WooCommerce,并提供 Prinetti, Matkahuolto, DB Schenker 等物流选项。

安装: 32

依赖项: 0

建议者: 0

安全: 0

星级: 23

关注者: 2

分支: 13

开放性问题: 4

类型:wordpress-plugin


README

Pakettikauppa

Pakettikauppa WordPress 插件,用于 WooCommerce

Build Status Latest Stable Version Total Downloads Latest Unstable Version License

成熟度

此软件现在可供一般使用。

安装

此插件可以通过 WordPress.org 插件目录、WP-CLI 或 Composer 安装。

wp plugin install --activate woo-pakettikauppa
# OR
wp plugin install --activate https://github.com/Seravo/woo-pakettikauppa/archive/master.zip
# OR
composer require seravo/woo-pakettikauppa

插件需要安装 WooCommerce >=4.4,并配置了配送区域、激活了此插件并设置了设置。

自然,店主也需要在Pakettikauppa开设商户账户。

注意!如果您已经与 Posti、Matkahuolto 或 DB Schenker 签署了具有折扣价格的运输合同,您可以联系 Pakettikauppa 的客户支持,通过 Pakettikauppa 获取这些合同,以便您可以使用 WooCommerce Pakettikauppa 插件与您当前的运输合同一起使用。

重要!在开始使用此插件之前,请与您的托管服务提供商确认您已禁用目录列表。有关目录列表的更多信息,请参阅 ApacheNginx 的文档。

功能

  • Pakettikauppa 集成到 WooCommerce
  • 基于官方的 Pakettikauppa API 库
  • 支持 WooCommerce 配送区域(尽管 Pakettikauppa 目前仅在芬兰可用)
  • 店主可以指定任何固定运费,或者如果订单价值超过一定限额,则提供免费运输
  • 客户可以选择将产品运送到地址或任何 Pakettikauppa 运输方式提供的自提点
  • 店主可以一键生成运单
  • 店主和客户将获得跟踪代码链接和状态信息
  • 提供测试模式,使用测试 API

屏幕截图

Checkout in twentynineteen theme Order confirmation in twentynineteen theme Order screen in admin Setup wizard

变更日志

查看 Git 历史。

开发者

欢迎拉取请求!

在提交您的补丁之前,请确保它是高质量的

开发者文档

请注意,官方文档位于 https://docs.woocommerce.com/document/shipping-method-api/,其中部分信息可能已过时。如需更多信息,请参阅 GitHub wiki 或直接使用 GitHub 搜索 查找如何扩展运输方法类的最新示例。

运行本地开发环境

要开发 woo-pakettikauppa(或任何 WordPress 插件),您需要有一个运行的 WordPress 安装。如果您想使用 Seravo/WordPress 作为本地开发环境,请将其克隆到您的计算机上,并按照其说明在 Vagrant 或 Docker 中启动。完成之后,您将拥有一个干净且几乎为空的 WordPress 网站。

假设您已将本地开发环境运行在 wordpress 目录中,并且此插件已检出到其旁边,您可以使用 entrrsync 自动将 woo-pakettikauppa 的内容同步到本地开发环境。

find * | entr rsync -vr . ../wordpress/htdocs/wp-content/plugins/woo-pakettikauppa | ts

这很方便,因为无论本地开发环境发生什么,woo-pakettikauppa 的 git checkout 总是受到保护,并且您可以始终以相同的方式在该目录中运行您的文本编辑器和 git 工具。

在本地开发环境中运行测试

项目中有预配置的 phpcs.xml 和 phpunit.xml 文件,因此运行测试非常简单。

vagrant$ cd /data/wordpress/htdocs/wp-content/plugins/woo-pakettikauppa/
vagrant$ phpcs
vagrant$ phpunit --verbose

请注意,本地开发版本中的 phpcs 和 phpunit 版本可能与 CI 系统中使用的版本不同,因此可能会产生不同的结果。

Travis CI 和自动测试

此项目有一个 .travis-ci.yml 定义,任何人都可以使用。只需按照以下步骤操作:

  1. 通过登录您的 Github.com 账户在 Travis-CI.org 上创建一个账户。
  2. 确保您在自己的 Github.com 账户中有一个此存储库的分支。
  3. 打开 Travis-CI.org 设置页面 并点击 "Sync repositories" Travis CI: Sync repositories
  4. 在存储库列表中搜索 woo-pakettikauppa 并为此存储库启用自动测试。 Travis CI: Activate
  5. 最初,页面 https://travis-ci.org/<username>/woo-pakettikauppa 将为空,但一旦您推送第一个提交,Travis-CI 将运行第一次构建。您也可以手动触发一个构建以开始它。 Travis CI: Trigger manual build

调试失败的 Travis CI 作业

首先仔细阅读所有失败的作业的输出。大多数情况下,失败的原因都清楚地说明了。

您还可以通过在本地开发环境中运行与 .travis.yml 运行相同的命令来模拟 Travis CI 运行的测试。

vagrant$ cd /data/wordpress/htdocs/wp-content/plugins/woo-pakettikauppa/
vagrant$ SNIFF=1 ./tests/install-tests.sh
vagrant$ SNIFF=1 ./tests/run-tests.sh

通过设置变量如'SNIFF'等来控制要运行的测试。查看当前矩阵中使用的所有选项,请参阅.travis.yml

Travis CI已发布travis-build,可以将.travis.yml文件转换为可运行的.sh脚本。他们还提供了一种调试构建模式,可以直接在Travis的服务器上通过SSH调试失败的构建。

翻译

如果您添加了新的可翻译字符串或编辑了现有的字符串,您必须在core/languages下重新生成woo-pakettikauppa.pot。最简单的方法是使用wp-cli。

wp i18n make-pot . core/languages/woo-pakettikauppa.pot

分支和发布

开发始终针对master分支

所有错误修复和新功能都在单独的git分支上开发。通过在提交信息或拉取请求标题中添加"WIP:"来标记工作进度。一旦功能准备就绪,就会打开一个拉取请求以供评论和审查。拉取请求不应包含对更改日志或版本号的任何更新,因为这些是在发布时单独完成的,以匹配实际发布。创建拉取请求意味着请求评论和审查,因此在新PR创建后至少等待24小时,以便其他人有时间做出回应。

非常小的错误修复(例如,修复拼写错误)可以直接在master上应用。请注意,所有提交都必须通过CI,因此Travis-CI需要先在某个分支上看到提交,GitHub需要将该提交注册为通过CI。然后,可以由具有对master写入权限的开发者直接在master上合并这些提交,而无需在GitHub上创建单独的拉取请求。

由于这是一个WordPress插件,因此只能发布一个版本。因此,没有单独的维护分支(一旦发布了2.1.x,下一个版本必须是2.1.y或更高版本,不能为2.0.x发布任何维护版本)。

创建新版本

所有改进都集成到master中,当当前的master经过测试并认为适合发布时,发布本身包括

  • 创建一个临时分支,其中增加版本号并更新更改日志,确保CI通过
  • 通过asiakaspalvelu@pakettikauppa.fi发送电子邮件作为即将发布的发布的提示
  • 等待1-2个工作日
  • 在master上合并临时分支并使用git标记它(不要使用GitHub的发布功能,它可能会破坏git标记引用)
  • 此存储库连接到https://deployer.seravo.com/、Packagist,所有发布操作都根据git标记自动执行

架构

插件编写得很容易被fork为一个白标版本,仅包含子集的运输提供商和自定义品牌。这是通过使用抽象类作为插件组件的工厂来实现的。可以通过简单地重载方法来替换每个组件。

Woo_Pakettikauppa_Core\Core类负责加载所有组件,并作为组件之间的桥梁。实例传递给大多数插件的子类,例如Woo_Pakettikauppa_Core\Admin,它保留对它的引用在$this->core下。

子类负责执行实际的重型工作。Admin处理wp-admin中的操作,Frontend处理前端,Shipment用于创建运输标签等。

Text 是一个特殊案例,它的真正目的是作为一个存储需要翻译的字符串的键值对存储。目前该插件中散布着 ___e 调用 - 在未来,所有这些都应该生活在 Text 中。这样做的好处是能够替换所有白标分叉中的任何文本。

模板

该插件包含一些模板文件,这些文件通过 wc_get_template 函数显示,因此可以在主题中覆盖它们。为此,需要将文件从 Pakettikauppa 插件目录(/wp-content/plugins/woo-pakettikauppa/templates/pakettikauppa)复制到 WordPress 主题目录(/wp-content/themes/<theme_name>/woocommerce/pakettikauppa)。