The enclosure_links WordPress PHP filter lets you modify the list of enclosure links before it is queried in the database.
Usage
add_filter('enclosure_links', 'your_custom_function', 10, 2);
function your_custom_function($post_links, $post_id) {
// your custom code here
return $post_links;
}
Parameters
$post_links(string[]): An array of enclosure links.$post_id(int): Post ID.
More information
See WordPress Developer Resources: enclosure_links
Examples
Remove specific enclosure link
Remove a specific enclosure link from the list before saving to the postmeta.
add_filter('enclosure_links', 'remove_specific_enclosure_link', 10, 2);
function remove_specific_enclosure_link($post_links, $post_id) {
$link_to_remove = 'https://example.com/bad-link.mp3';
$post_links = array_diff($post_links, [$link_to_remove]);
return $post_links;
}
Add new enclosure link
Add a new enclosure link to the list before saving to the postmeta.
add_filter('enclosure_links', 'add_new_enclosure_link', 10, 2);
function add_new_enclosure_link($post_links, $post_id) {
$new_link = 'https://example.com/new-link.mp3';
$post_links[] = $new_link;
return $post_links;
}
Modify existing enclosure links
Replace the domain name of all enclosure links before saving to the postmeta.
add_filter('enclosure_links', 'modify_enclosure_links', 10, 2);
function modify_enclosure_links($post_links, $post_id) {
$old_domain = 'https://old.example.com';
$new_domain = 'https://new.example.com';
$post_links = array_map(function ($link) use ($old_domain, $new_domain) {
return str_replace($old_domain, $new_domain, $link);
}, $post_links);
return $post_links;
}
Remove all enclosure links
Remove all enclosure links from the list before saving to the postmeta.
add_filter('enclosure_links', 'remove_all_enclosure_links', 10, 2);
function remove_all_enclosure_links($post_links, $post_id) {
return [];
}
Filter enclosure links based on file extension
Keep only enclosure links with a specific file extension before saving to the postmeta.
add_filter('enclosure_links', 'filter_enclosure_links_by_extension', 10, 2);
function filter_enclosure_links_by_extension($post_links, $post_id) {
$allowed_extension = '.mp3';
$post_links = array_filter($post_links, function ($link) use ($allowed_extension) {
return substr($link, -strlen($allowed_extension)) === $allowed_extension;
});
return $post_links;
}