Description
DimDul One Page Product Checkout for WooCommerce puts the product, cart controls, and checkout form on one page. Add a shortcode and visitors can choose options, add the product, and pay without leaving the page.
It keeps WooCommerce’s native variable product form, so extensions such as Variation Swatches for WooCommerce continue to work.
This plugin requires WooCommerce. It is free and GPL-licensed. It does not call home and does not load scripts from a third-party CDN.
Key features
- One shortcode for any product:
[one_page_product_checkout product_id="123"] - Five landing templates: Classic, Stacked, Detail First, Express, and Sticky Sidebar
- Optional product Description and Reviews blocks (display only) in the richer templates
- AJAX add-to-cart and live quantity updates (no page reloads)
- Embedded WooCommerce checkout on the same page
- Simple and variable products, including swatch plugins
- Server-side variation matching and stock validation
- Cart-merge logic that prevents duplicate line items
- Admin settings for defaults, layout, accent colours, and button text
- HPOS (High-Performance Order Storage) compatible
- Translation ready (
.potincluded)
Requirements
- WordPress 6.0 or higher
- PHP 7.4 or higher
- WooCommerce 7.0 or higher
Installation
- Go to Plugins → Add New → Upload Plugin.
- Upload
dimdul-one-page-product-checkout.zipand click Install Now. - Click Activate.
- Make sure WooCommerce is installed and active.
- Open WooCommerce → One Page Checkout to set defaults.
- Add the shortcode to any page, replacing the ID with your product ID.
Prefer a manual install? Unzip the package and copy the dimdul-one-page-product-checkout folder into wp-content/plugins/.
If WooCommerce is not active, the same settings screen is under Settings → One Page Checkout.
Settings
These values are used whenever a shortcode attribute is omitted.
| Setting | Description |
|---|---|
| Landing template | Classic, Stacked, Detail First, Express, or Sticky Sidebar. Override per page with template="…". |
| Show product summary | Display the image, title, and short description column. |
| Auto-add simple products | Add one unit on load for simple products. |
| Clear cart on load | Empty the cart before rendering. Use this for single-product funnels. |
| Accent colour / hover | Button and highlight colours. |
| Add to cart button text | Custom button label. |
| Checkout heading | Heading shown above the checkout form. |
| Load bundled styles | Turn this off only if your theme already styles the layout. |
Shortcode
[one_page_product_checkout product_id="123"]
| Attribute | Values | Default | Description |
|---|---|---|---|
product_id |
integer | required | WooCommerce product ID. |
template |
classic / stacked / detail-first / express / sidebar |
Settings | Landing layout. |
clear_cart |
yes / no |
Settings | Empty the cart before rendering. |
auto_add_simple |
yes / no |
Settings | For simple products, add quantity 1 on first load if the item is not in the cart. |
show_product_summary |
yes / no |
Settings | Show the image / title / description column. |
Templates
| Slug | Layout |
|---|---|
classic (default) |
Two columns: summary left, purchase controls and checkout right. |
stacked |
Single column: image, summary, purchase controls, checkout, description, reviews. |
detail-first |
Two columns on top (summary | purchase), then full-width description, reviews, and checkout. |
express |
Narrow centered funnel: summary, purchase controls, and checkout only. |
sidebar |
Scrolling content (summary, description, reviews) with a sticky checkout card on desktop. |
stacked, detail-first, and sidebar add the product long description and a read-only reviews list (average rating plus approved reviews; no submit form). The older layout option is mapped automatically: two-column → Classic, single → Stacked.
Examples
Dedicated funnel (only this product in the cart):
[one_page_product_checkout product_id="456" clear_cart="yes"]
Variable product, keep existing cart items:
[one_page_product_checkout product_id="789" show_product_summary="yes"]
Simple product with a manual quantity field:
[one_page_product_checkout product_id="321" auto_add_simple="no"]
Sticky sidebar template:
[one_page_product_checkout product_id="123" template="sidebar"]
How it works
- The shortcode validates the product and, if asked, clears the cart.
- Simple products can be auto-added on load. Variable products show the native WooCommerce selector.
- Adding to cart or changing quantity goes through a nonce-protected AJAX endpoint.
- The embedded checkout refreshes automatically via
update_checkout.
Variable products
- The visitor sees the standard WooCommerce variation selector.
- Choosing options sets
variation_idandattribute_*fields. - Clicking Add to cart sends those fields over AJAX.
- The server validates the combination, stock, and purchasability, then merges into any existing line.
- The checkout section appears and totals refresh.
Variation Swatches for WooCommerce is supported. The plugin keeps the native variation form, so swatch plugins attach as usual. If a swatch fails, open the browser network tab and confirm admin-ajax.php?action=oppcl_add_to_cart returns success with a cart_item_key.
Developer hooks
Force asset loading when the shortcode is stored outside post_content (page builders):
add_filter( 'oppcl_load_assets', function ( $load, $post ) {
if ( $post && (int) $post->ID === 123 ) {
return true;
}
return $load;
}, 10, 2 );
Privacy
This plugin does not collect, transmit, or store personal data of its own. Cart, checkout, and order data stay on your WordPress site and are processed by WooCommerce. Deleting the plugin runs uninstall.php, which removes its options.
Troubleshooting
| Symptom | Check |
|---|---|
| “WooCommerce is required” | Activate WooCommerce. |
| Scripts missing / checkout frozen | The shortcode is stored outside post_content. Use the oppcl_load_assets filter. |
| Variation add always errors | Confirm attributes match a variation, check stock, and test with core dropdowns. |
| Layout looks unstyled | “Load bundled styles” is off and the theme has no matching styles. Turn it back on. |
| Duplicate cart items | Use clear_cart="yes" on strict single-product landers. |
Support
For help, use the plugin’s support forum on WordPress.org. Include your WordPress and WooCommerce versions and any console or network errors.
DimDul · dimdul.com · [email protected]

