---
title: Hooks
summary: The two filters LanternWP and LanternWP Companion offer, with examples.
url: https://lanternwp.com/developers/hooks
updated: 2026-10-08
---

# Hooks

Both filters are part of the [public API](public-api.md). Add them in a child theme's `functions.php` or in your own plugin, never in the theme or Companion, which updates replace.

## lanternwp_welcome_steps

Theme, since 0.2.1. Filters the steps of **Appearance → LanternWP**, the theme's welcome screen. Each step is an array with a `title`, a `text`, whether it is `done` and its `actions`, each a `label` and a `url`, and optionally `primary` for the step's main button. A step or an action without that shape is left out, so a mistake leaves the screen as it was.

An agency can add its own setup steps for a client:

```php
add_filter( 'lanternwp_welcome_steps', function ( array $steps ): array {
	$steps[] = [
		'title'   => __( 'Connect your payment provider', 'my-agency' ),
		'text'    => __( 'The store takes cards once it is connected.', 'my-agency' ),
		'done'    => my_agency_payments_ready(),
		'actions' => [
			[
				'label'   => __( 'Payment settings', 'my-agency' ),
				'url'     => admin_url( 'admin.php?page=wc-settings&tab=checkout' ),
				'primary' => true,
			],
		],
	];

	return $steps;
} );
```

## lanternwp_demo_server

Companion, since 0.1.0. Filters the demo store the **Appearance → Demos** screen lists and imports demos from: `https://lanternwp.com` by default. Return the address of another store that serves the same API, such as a copy of lanternwp.com for development. A value that is not a valid URL is ignored. `wp lanternwp demo import` does not use it; it takes `--server` instead ([WP-CLI](wp-cli.md)).

```php
add_filter( 'lanternwp_demo_server', fn () => 'https://demos.example.test' );
```
