The LinkToolbar component allows for linking a portion of content or other block attribute data to a user-defined URL.
Internally, LinkToolbar is wrapping a LinkControl, and thus allows for searching posts or archives, as well as providing a custom URL.
It is also possible to mark the link to open in a new tab (where browser settings permit).
![]() |
|---|
LinkToolbar component. |
![]() |
|---|
LinkToolbar component displaying nested LinkControl component. |
For a minimum working setup, all you need to do is pass a URL, as well as an onChange callback that accepts an object with a url property.
import { LinkToolbar } from '@humanmade/block-editor-components';
import { BlockControls } from '@wordpress/block-editor';
function BlockEdit( props ) {
const { attributes, setAttributes } = props;
const { url } = attributes;
return (
<BlockControls>
<LinkToolbar
url={ url }
onChange={ ( { url } ) => setAttributes( { url } ) }
/>
</BlockControls>
);
}In order to support opening the resource in a new tab, the data object passed to the onChange callback also includes an opensInNewTab Boolean property.
For best UX, you should handle this as well.
import { LinkToolbar } from '@humanmade/block-editor-components';
import { BlockControls } from '@wordpress/block-editor';
function BlockEdit( props ) {
const { attributes, setAttributes } = props;
const { opensInNewTab, url } = attributes;
return (
<BlockControls>
<LinkToolbar
opensInNewTab={ opensInNewTab }
url={ url }
onChange={ ( { opensInNewTab, url } ) => setAttributes( { opensInNewTab, url } ) }
/>
</BlockControls>
);
}The LinkToolbar component does not have any custom props other than opensInNewTab, value and onChange, which are all passed on as is to the nested LinkControl component.
The callback to use for handling changing the URL (or if it should open in a new tab).
Please note that onChange will receive a data object, where url contains the URL as a string and opensInNewTab contains Boolean true or false, representing whether to open the URL in a new tab or not, respectively.
| Type | Required | Default |
|---|---|---|
Function |
yes | undefined |
The callback to use for handling selecting and deselecting a file.
Please note that onChange will receive a full media object from MediaUpload, and null if a previously selected file has been deselected.
| Type | Required | Default |
|---|---|---|
bool |
no | undefined |
The URL to link to.
| Type | Required | Default |
|---|---|---|
string |
yes | undefined |
The LinkToolbar component requires the following dependencies, which are expected to be available:
@wordpress/block-editor@wordpress/components@wordpress/i18n

