Lagersystem.dk: Parcelpickup locator for Woocommerce
Enables customer to choose pickup point in woocommerce checkout flow with google maps interface. Shows points name, address and opening hours. Saves the points data to order and sets pickup point ID as extra field in woocommerce order. Plugin supports carriers: PostNord, GLS, Bring, DHL, UPS and DAO
About this tool.
Enables customer to choose pickup point in woocommerce checkout flow with google maps interface. Shows points name, address and opening hours. Saves the points data to order and sets pickup point ID as extra field in woocommerce order. Plugin supports carriers: PostNord, GLS, Bring, DHL, UPS and DAO. Is compatable with default woocommerce shipping and flexible shipping plugin.
Compatibility
Validated with WordPress 7.1.2 and WooCommerce 11.1.2 on PHP 8.3. Supports both High-Performance Order Storage (HPOS) and legacy order storage. Supports classic checkout ([woocommerce_checkout]) and WooCommerce Checkout Blocks. Blocks suggest nearby pickup points using the shipping address and preserve the shipping recipient. Customers can change the suggestion using the existing map/list chooser. Selection occurs at checkout, not in the Cart block. The pickup address is saved on the order; the customer’s cart address and billing address stay intact. One pickup point is stored per order using the existing Pakkeshop metadata. Blocks reject pickup when the order has multiple shipping packages; ordinary home delivery still works. Classic checkout continues to handle the first shipping package and uses the billing address. Live carrier responses and Google Maps require valid API credentials and a staging checkout test.
Development tests
JavaScript regressions (Node.js 22): npm ci –prefix tests && npm test –prefix tests PHP integration (disposable WordPress installation with WooCommerce and this plugin active): wp eval-file wp-content/plugins/lagersystem-parcelpickup-woocommerce/tests/integration.php wp eval-file wp-content/plugins/lagersystem-parcelpickup-woocommerce/tests/blocks-api.php Run with woocommerce_custom_orders_table_enabled set to both no and yes, and woocommerce_custom_orders_table_data_sync_enabled set to no, using a fresh process each time. wp eval-file wp-content/plugins/lagersystem-parcelpickup-woocommerce/tests/ajax.php The AJAX test mocks the carrier HTTP response; it does not need API credentials. GitLab CI runs PHP lint, checkout regressions, and classic/Store API integration tests on WordPress 6.5 / WooCommerce 8.2.0 and WordPress 7.1.2 / WooCommerce 11.1.2, with HPOS off and on. The test scripts change options and create/delete test orders. Use a disposable database only.
Browser tests (disposable site only): 1. Run wp eval-file wp-content/plugins/lagersystem-parcelpickup-woocommerce/tests/fixtures/blocks-setup.php. 2. From the site’s root, run mkdir -p wp-content/mu-plugins/, then copy this plugin’s tests/fixtures/blocks-service.php into that directory. 3. Run npm ci –prefix tests and npx –prefix tests playwright install chromium. 4. Run PICKUP_TEST_URL=http://your-test-site PICKUP_TEST_PRODUCT= PICKUP_TEST_CHECKOUT= npm run test:browser –prefix tests. PICKUP_CHROME_CHANNEL=chrome uses an installed Chrome instead of Playwright Chromium. The browser tests use fixture carrier responses and a Google Maps stub, plus a Maps-unavailable scenario. Remove the fixture plugin with the disposable site. Production release archives exclude all tests.