Normalize the output of WordPress's native "link" in ACF.

1.6.1-alpha 2020-11-10 20:35 UTC


Build Status

The purpose of this small package is to ingest the link arrays produced by ACF’s "link" field type, do a bit of logic on them, and provide a nice interface for interacting with that data. It can also accept urls as plain strings.


ACF field
$Link = new Normalized(get_field('some_link'));

$Link->valid(); //whether or not this is a "valid" link
$Link->url(); // the URL of the link
$Link->label(); // the "title" set for this link
$Link->newTab(); // whether this link should be opened in a new tab
$Link->probablyExternal() // if the link is (probably) external or not
Simple string
$Link = new Normalized('');


A small number of settings are also supported, which can be passed when instantiated.

$Link = new Normalized(get_field('some_link'), [
    'label' => "Learn More", // Used as a fallback if there is no `title.`
    'external_in_new_tab' => true, // Always open external links in new tab
    'validate' => [
        'url' => false,
        'label' => false,
    ], // Validate url and/or label

label defaults to "Learn More" and external_in_new_tab defaults to true. validate defaults to not validating inputs. You can specify which items (url or label) to validated, or set validate to true to validate all items.