Ich habe es nun maximal kompliziert umgesetzt :D
Der PHP Code, bspw. in der functions.php sieht so aus:
Code
// Add media button
add_action('media_buttons', static function () {
echo '<a href="#" id="insert-media-except-images" class="button">Datei hinzufügen</a>';
}, 15);
// Add media button JS
add_action('wp_enqueue_media', static function () {
wp_enqueue_script('media_button', plugins_url('/../../assets/js/media_button.js', __FILE__), ['jquery'], '1.0', true);
});
Dazu kommt dann die JS Datei unter "{plugin_dir}/assets/js/media_button.js":
Code
jQuery(function ($) {
$(document).ready(function () {
$('body').on('click', '#insert-media-except-images', function () {
if (this.window === undefined) {
this.window = wp.media({
title: 'Datei auswählen',
library: { type: [ 'application', 'audio', 'video', 'text'] },
multiple: false,
button: { text: 'Einfügen' }
})
this.window.on('select', () => {
const selection = this.window.state().get('selection').first().toJSON()
wp.media.editor.insert(`<a href="${selection.url}">${selection.title}</a>`)
})
}
this.window.open()
return false
})
});
})
Alles anzeigen
Und zu guter letzt noch den eigentlichen Media-Button ausblenden:
Et voilà! Bei ACF muss dann außerdem noch bei jedem WYSIWYG Editor Feld "media_upload" aktiviert sein. Sonst wird der neue Button nämlich nicht ausgespielt. Deshalb muss man auch den eigentlichen Button ausblenden.