woocommerce/plugins/woocommerce-blocks/docs/third-party-developers/extensibility/checkout-block/available-slot-fills.md

8.8 KiB

Available Slots

Table of Contents

This document presents the list of available Slots that you can use for adding your custom content (Fill).

If you want to add a new SlotFill component, check the Checkout - Slot Fill document. To read more about Slot and Fill, check the Slot and Fill document.

Note About Naming: Slots that are prefixed with Experimental are experimental and subject to change or remove. Once they graduate from the experimental stage, the naming would change and the Experimental prefix would be dropped. Check the Feature Gating document from more information.

ExperimentalOrderMeta

This Slot renders below the Checkout summary section and above the "Proceed to Checkout" button in the Cart.

/**
 * External dependencies
 */
import { __ } from '@wordpress/i18n';
import { registerPlugin } from '@wordpress/plugins';
import { ExperimentalOrderMeta } from '@woocommerce/blocks-checkout';
 
const render = () => {
  return (
    <ExperimentalOrderMeta>
      <div class="wc-block-components-totals-wrapper">
        {
          __( 'Yearly recurring total ...', 'YOUR-TEXTDOMAIN' )
        }
      </div>
    </ExperimentalOrderMeta>
  );
};
 
registerPlugin( 'slot-and-fill-examples', {
  render,
  scope: 'woocommerce-checkout',
} );

Cart:

Example of ExperimentalOrderMeta in the Cart block

Checkout:

Example of ExperimentalOrderMeta in the Checkout block

Passed parameters

  • cart: wc/store/cart data but in camelCase instead of snake_case. Object breakdown.
  • extensions: external data registered by third-party developers using ExtendSchema. If you used ExtendSchema on wc/store/cart you would find your data under your namespace here.
  • context, equal to the name of the Block in which the fill is rendered: woocommerce/cart or woocommerce/checkout

ExperimentalOrderShippingPackages

This slot renders inside the shipping step of Checkout and inside the shipping options in Cart.

/**
 * External dependencies
 */
import { __ } from '@wordpress/i18n';
import { registerPlugin } from '@wordpress/plugins';
import { ExperimentalOrderShippingPackages } from '@woocommerce/blocks-checkout';
 
const render = () => {
  return (
    <ExperimentalOrderShippingPackages>
      <div>
        {
          __( 'Express Shipping', 'YOUR-TEXTDOMAIN' )
        }  
      </div>
    </ExperimentalOrderShippingPackages>
  );
};
 
registerPlugin( 'slot-and-fill-examples', {
  render,
  scope: 'woocommerce-checkout',
} );

Cart:

Example of ExperimentalOrderShippingPackages in the Cart block

Checkout:

Example of ExperimentalOrderShippingPackages in the Checkout block

Passed parameters

  • collapsible: Boolean|undefined If a shipping package panel should be collapsible or not, this is false in Checkout and undefined in Cart.
  • collapse: Boolean If a panel should be collapsed by default, this is true if if panels are collapsible.
  • showItems: Boolean|undefined If we should show the content of each package, this is undefined in Cart and Checkout and is left to the actual package logic to decide.
  • noResultsMessage: A React element that you can render if there are no shipping options.
  • renderOption: a render function that takes a rate object and returns a render option.
  • cart: wc/store/cart data but in camelCase instead of snake_case. Object breakdown.
  • extensions: external data registered by third-party developers using ExtendSchema, if you used ExtendSchema on wc/store/cart you would find your data under your namespace here.
  • components: an object containing components you can use to render your own shipping rates, it contains ShippingRatesControlPackage.
  • context, equal to the name of the Block in which the fill is rendered: woocommerce/cart or woocommerce/checkout

ExperimentalOrderLocalPickupPackages

This slot renders inside the Checkout Pickup Options block in the Checkout block. It does not render in the Cart block.

/**
 * External dependencies
 */
import { __ } from '@wordpress/i18n';
import { registerPlugin } from '@wordpress/plugins';
import { ExperimentalOrderLocalPickupPackages } from '@woocommerce/blocks-checkout';
 
const render = () => {
  return (
    <ExperimentalOrderLocalPickupPackages>
      <div>
        {
          __( 'By using our convenient local pickup option, you can come to our store and pick up your order. We will send you and email when your order is ready for pickup.', 'YOUR-TEXTDOMAIN' )
        }
      </div>
    </ExperimentalOrderLocalPickupPackages>
  );
};
 
registerPlugin( 'slot-and-fill-examples', {
  render,
  scope: 'woocommerce-checkout',
} );

Checkout:

Example of ExperimentalOrderLocalPickupPackages in the Checkout block

Passed parameters

  • renderPickupLocation: a render function that renders the address details of a local pickup option.
  • cart: wc/store/cart data but in camelCase instead of snake_case. Object breakdown.
  • extensions: external data registered by third-party developers using ExtendSchema, if you used ExtendSchema on wc/store/cart you would find your data under your namespace here.
  • components: an object containing components you can use to render your own pickup rates, it contains ShippingRatesControlPackage and RadioControl.

ExperimentalDiscountsMeta

This slot renders below the CouponCode input.

/**
 * External dependencies
 */
import { __ } from '@wordpress/i18n';
import { registerPlugin } from '@wordpress/plugins';
import { ExperimentalDiscountsMeta } from '@woocommerce/blocks-checkout';
 
const render = () => {
  return (
    <ExperimentalDiscountsMeta>
      <div class="wc-block-components-totals-wrapper">
        {
          __( 'You have 98683 coins to spend ...', 'YOUR-TEXTDOMAIN' )
        }
      </div>
    </ExperimentalDiscountsMeta>
  );
};
 
registerPlugin( 'slot-and-fill-examples', {
  render,
  scope: 'woocommerce-checkout',
} );

Cart:

Cart showing ExperimentalDiscountsMeta location

Checkout:

Checkout showing ExperimentalDiscountsMeta location

Passed parameters

  • cart: wc/store/cart data but in camelCase instead of snake_case. Object breakdown.
  • extensions: external data registered by third-party developers using ExtendSchema, if you used ExtendSchema on wc/store/cart you would find your data under your namespace here.
  • context, equal to the name of the Block in which the fill is rendered: woocommerce/cart or woocommerce/checkout

We're hiring! Come work with us!

🐞 Found a mistake, or have a suggestion? Leave feedback about this document here.