WooCommerce Code Reference

Wishlist extends AbstractBlock
in package

Wishlist block.

Renders the shopper's wishlist, wired to the shopper-lists Store API endpoints via the shared woocommerce/shopper-lists iAPI store. PHP prefetches the list so the first paint is already populated; JS then takes over for adds, removes, and the per-row "Add to cart" action.

Unlike Saved for Later, this block is merchant-placed — no Block Hooks API integration. It's rendered by the /my-account/wishlist/ endpoint (gated by the product_wishlist feature flag) and can also be placed on any other page or template. "Add to cart" mirrors Saved for Later's Move-to-cart flow: add the product to the cart, then remove it from the wishlist on confirmed success.

Table of Contents

LIST_SLUG  = 'wishlist'
The list slug this block renders. Constant — when additional list types ship as their own blocks, each one hardcodes its own slug.
$asset_api  : Api
Instance of the asset API.
$asset_data_registry  : AssetDataRegistry
Instance of the asset data registry.
$block_name  : string
Block name.
$enqueued_assets  : bool
Tracks if assets have been enqueued.
$integration_registry  : IntegrationRegistry
Instance of the integration registry.
$namespace  : string
Block namespace.
__construct()  : mixed
Constructor.
enqueue_editor_assets()  : mixed
Enqueue assets used for rendering the block in editor context.
render_callback()  : string
The default render_callback for all blocks. This will ensure assets are enqueued just in time, then render the block (if applicable).
enqueue_data()  : mixed
Data passed through from server to client for block.
enqueue_scripts()  : mixed
Register/enqueue scripts used for this block on the frontend, during render.
get_block_type()  : string
Get the block type.
get_block_type_attributes()  : array<string|int, mixed>
Get block attributes.
get_block_type_editor_script()  : array<string|int, mixed>|string
Get the editor script data for this block type.
get_block_type_editor_style()  : null
Disable the editor style handle for this block type.
get_block_type_render_callback()  : callable|null
Get the render callback for this block type.
get_block_type_script()  : null
Get the frontend script handle for this block type.
get_block_type_style()  : null
Get the frontend style handle for this block type.
get_block_type_supports()  : string
Get the supports array for this block type.
get_block_type_uses_context()  : array<string|int, mixed>
Get block usesContext.
get_chunks_paths()  : array<string|int, string>
Generate an array of chunks paths for loading translation.
get_full_block_name()  : string
Get the full block name, including namespace.
get_routes_from_namespace()  : array<string|int, mixed>
Get routes from a REST API namespace.
initialize()  : mixed
Initialize this block type.
is_block_editor()  : mixed
Are we currently on the admin block editor screen?
parse_render_callback_attributes()  : array<string|int, mixed>
Parses block attributes from the render_callback.
register_block_type()  : array<string|int, string>
Registers the block type with WordPress.
register_block_type_assets()  : mixed
Register script and style assets for the block type before it is registered.
register_chunk_translations()  : mixed
Injects Chunk Translations into the page so translations work for lazy loaded components.
render()  : string
Render the block.
get_add_to_cart_label()  : string
Visible label for the add-to-cart action button, used by both the iAPI `<template>` and the SSR per-row markup.
get_remove_label_template()  : string
Sprintf template for the per-row remove button's aria-label. Used both by PHP SSR and by the JS-side getter (via `wp_interactivity_config`) so both paths produce the same string after `%s` interpolation.
prefetch_items()  : array<int, array<string, mixed>>
Prefetch the wishlist items via `rest_do_request()`. Logged-out users short-circuit to an empty list — the route requires authentication and we don't want to fire an API call that's only going to 401.
render_empty_markup()  : string
Render the empty-state markup. Visible on first paint when the list is empty (no `hasShownItems` gate), then iAPI takes over via `state.isEmpty` for runtime transitions.
render_header_markup()  : string
Wrap the inner-block content (heading + any future siblings) in a div. Unlike Saved for Later, no `hasShownItems` gating — the header is always shown when there's content for it. Returns an empty string when there's no content to wrap, so we don't emit an empty `<div>`.
render_item_markup()  : string
Render a single SSR item. Composes the shared image / name / price markup with the Wishlist-specific "Add to cart" button.
render_items_markup()  : string
Render the SSR markup for each item. JS will reconcile these via `data-wp-each-child` after hydration.
render_ssr_add_to_cart()  : string
SSR-mode markup for the "Add to cart" action button. Always emits the wrapper so iAPI can toggle `hidden` after hydration without swapping the row out. Starts hidden when the row isn't purchasable.
render_template_add_to_cart()  : string
Template-mode markup for the "Add to cart" action button. iAPI substitutes the per-row state through `data-wp-bind--hidden` and `data-wp-bind--disabled`.
render_template_markup()  : string
The `<template data-wp-each>` describing how each item is rendered on the client. Pre-rendered children sit alongside as `data-wp-each-child` elements so first paint is populated. Composes the shared row markup with the Wishlist-specific "Add to cart" action button.

Constants

LIST_SLUG

The list slug this block renders. Constant — when additional list types ship as their own blocks, each one hardcodes its own slug.

private mixed LIST_SLUG = 'wishlist'

Properties

Methods

__construct()

Constructor.

public __construct(Api $asset_api, AssetDataRegistry $asset_data_registry, IntegrationRegistry $integration_registry[, string $block_name = '' ]) : mixed
Parameters
$asset_api : Api

Instance of the asset API.

$asset_data_registry : AssetDataRegistry

Instance of the asset data registry.

$integration_registry : IntegrationRegistry

Instance of the integration registry.

$block_name : string = ''

Optionally set block name during construct.

Return values
mixed

enqueue_editor_assets()

Enqueue assets used for rendering the block in editor context.

public enqueue_editor_assets() : mixed

This is needed if a block is not yet within the post content--render and enqueue_assets may not have ran.

Return values
mixed

render_callback()

The default render_callback for all blocks. This will ensure assets are enqueued just in time, then render the block (if applicable).

public render_callback([array<string|int, mixed>|WP_Block $attributes = [] ][, string $content = '' ][, WP_Block|null $block = null ]) : string
Parameters
$attributes : array<string|int, mixed>|WP_Block = []

Block attributes, or an instance of a WP_Block. Defaults to an empty array.

$content : string = ''

Block content. Default empty string.

$block : WP_Block|null = null

Block instance.

Return values
stringRendered block type output.

enqueue_data()

Data passed through from server to client for block.

protected enqueue_data([array<string|int, mixed> $attributes = [] ]) : mixed
Parameters
$attributes : array<string|int, mixed> = []

Any attributes that currently are available from the block. Note, this will be empty in the editor context when the block is not in the post content on editor load.

Return values
mixed

enqueue_scripts()

Register/enqueue scripts used for this block on the frontend, during render.

protected enqueue_scripts([array<string|int, mixed> $attributes = [] ]) : mixed
Parameters
$attributes : array<string|int, mixed> = []

Any attributes that currently are available from the block.

Return values
mixed

get_block_type()

Get the block type.

protected get_block_type() : string
Tags
deprecated
10.9.0

Use get_full_block_name() instead.

Return values
string

get_block_type_attributes()

Get block attributes.

protected get_block_type_attributes() : array<string|int, mixed>
Return values
array<string|int, mixed>

get_block_type_editor_script()

Get the editor script data for this block type.

protected get_block_type_editor_script([string $key = null ]) : array<string|int, mixed>|string
Parameters
$key : string = null

Data to get, or default to everything.

Tags
see

$this->register_block_type()

Return values
array<string|int, mixed>|string

get_block_type_editor_style()

Disable the editor style handle for this block type.

protected get_block_type_editor_style() : null
Return values
null

get_block_type_render_callback()

Get the render callback for this block type.

protected get_block_type_render_callback() : callable|null

Dynamic blocks should return a callback, for example, return [ $this, 'render' ];

Tags
see

$this->register_block_type()

Return values
callable|null

get_block_type_script()

Get the frontend script handle for this block type.

protected get_block_type_script([string|null $key = null ]) : null

Scripts are loaded via viewScriptModule in block.json.

Parameters
$key : string|null = null

The key of the script to get.

Return values
null

get_block_type_style()

Get the frontend style handle for this block type.

protected get_block_type_style() : null

Returning null lets WP use the style array from block.json, which lists this block's own stylesheet plus the atomic product-image / product-price / product-button stylesheets we borrow class names from.

Return values
null

get_block_type_supports()

Get the supports array for this block type.

protected get_block_type_supports() : string
Tags
see

$this->register_block_type()

Return values
string

get_block_type_uses_context()

Get block usesContext.

protected get_block_type_uses_context() : array<string|int, mixed>
Return values
array<string|int, mixed>

get_chunks_paths()

Generate an array of chunks paths for loading translation.

protected get_chunks_paths(string $chunks_folder) : array<string|int, string>
Parameters
$chunks_folder : string

The folder to iterate over.

Return values
array<string|int, string>$chunks list of chunks to load.

get_routes_from_namespace()

Get routes from a REST API namespace.

protected get_routes_from_namespace(string $namespace) : array<string|int, mixed>
Parameters
$namespace : string

Namespace to retrieve.

Return values
array<string|int, mixed>

initialize()

Initialize this block type.

protected initialize() : mixed
  • Hook into WP lifecycle.
  • Register the block with WordPress.
Return values
mixed

parse_render_callback_attributes()

Parses block attributes from the render_callback.

protected parse_render_callback_attributes(array<string|int, mixed>|WP_Block $attributes) : array<string|int, mixed>
Parameters
$attributes : array<string|int, mixed>|WP_Block

Block attributes, or an instance of a WP_Block. Defaults to an empty array.

Return values
array<string|int, mixed>

register_block_type()

Registers the block type with WordPress.

protected register_block_type() : array<string|int, string>
Return values
array<string|int, string>Chunks paths.

register_block_type_assets()

Register script and style assets for the block type before it is registered.

protected register_block_type_assets() : mixed

This registers the scripts; it does not enqueue them.

Return values
mixed

register_chunk_translations()

Injects Chunk Translations into the page so translations work for lazy loaded components.

protected register_chunk_translations(array<string|int, string> $chunks) : mixed

The chunk names are defined when creating lazy loaded components using webpackChunkName.

Parameters
$chunks : array<string|int, string>

Array of chunk names.

Return values
mixed

render()

Render the block.

protected render(array<string|int, mixed> $attributes, string $content, WP_Block $block) : string
Parameters
$attributes : array<string|int, mixed>

Block attributes.

$content : string

Block content.

$block : WP_Block

Block instance.

Return values
stringRendered block type output.

get_add_to_cart_label()

Visible label for the add-to-cart action button, used by both the iAPI `<template>` and the SSR per-row markup.

private get_add_to_cart_label() : string
Return values
string

get_remove_label_template()

Sprintf template for the per-row remove button's aria-label. Used both by PHP SSR and by the JS-side getter (via `wp_interactivity_config`) so both paths produce the same string after `%s` interpolation.

private get_remove_label_template() : string
Return values
string

prefetch_items()

Prefetch the wishlist items via `rest_do_request()`. Logged-out users short-circuit to an empty list — the route requires authentication and we don't want to fire an API call that's only going to 401.

private prefetch_items() : array<int, array<string, mixed>>
Return values
array<int, array<string, mixed>>Items in the schema response shape.

render_empty_markup()

Render the empty-state markup. Visible on first paint when the list is empty (no `hasShownItems` gate), then iAPI takes over via `state.isEmpty` for runtime transitions.

private render_empty_markup(array<int, array<string, mixed>> $items) : string
Parameters
$items : array<int, array<string, mixed>>

Schema-shape items.

Return values
string

render_header_markup()

Wrap the inner-block content (heading + any future siblings) in a div. Unlike Saved for Later, no `hasShownItems` gating — the header is always shown when there's content for it. Returns an empty string when there's no content to wrap, so we don't emit an empty `<div>`.

private render_header_markup(string $content) : string
Parameters
$content : string

Rendered inner-block content (typically the heading HTML).

Return values
string

render_item_markup()

Render a single SSR item. Composes the shared image / name / price markup with the Wishlist-specific "Add to cart" button.

private render_item_markup(array<string, mixed> $item) : string
Parameters
$item : array<string, mixed>

Schema-shape item.

Return values
string

render_items_markup()

Render the SSR markup for each item. JS will reconcile these via `data-wp-each-child` after hydration.

private render_items_markup(array<int, array<string, mixed>> $items) : string
Parameters
$items : array<int, array<string, mixed>>

Schema-shape items.

Return values
string

render_ssr_add_to_cart()

SSR-mode markup for the "Add to cart" action button. Always emits the wrapper so iAPI can toggle `hidden` after hydration without swapping the row out. Starts hidden when the row isn't purchasable.

private render_ssr_add_to_cart(array<string, mixed> $item) : string
Parameters
$item : array<string, mixed>

Schema-shape item.

Return values
string

render_template_add_to_cart()

Template-mode markup for the "Add to cart" action button. iAPI substitutes the per-row state through `data-wp-bind--hidden` and `data-wp-bind--disabled`.

private render_template_add_to_cart() : string
Return values
string

render_template_markup()

The `<template data-wp-each>` describing how each item is rendered on the client. Pre-rendered children sit alongside as `data-wp-each-child` elements so first paint is populated. Composes the shared row markup with the Wishlist-specific "Add to cart" action button.

private render_template_markup() : string
Return values
string