下記参照
// 非同期処理で、Attachment Display Settings のSelectの値を変更する
add_action( 'print_media_templates', function(){
echo '
<script>
document.getElementById("insert-media-button").addEventListener("click", async function() {
const preview_video = await waitForElement(".attachment-preview.type-video");
preview_video.forEach(elm => {
elm.firstElementChild.addEventListener("click", async function() {
const link_to = await waitForElement("#attachment-display-settings-link-to");
link_to[0].value = "file";
// 強制的にイベント発火
var event = document.createEvent("HTMLEvents");
event.initEvent("change",true,false);
document.getElementById("attachment-display-settings-link-to").dispatchEvent(event);
// document.getElementById("attachment-display-settings-link-to").value = "file";
// document.getElementById("attachment-display-settings-link-to").dispatchEvent( new Event("click") );
});
});
});
// 要素が見つかるまで待つ関数
async function waitForElement(selector) {
return new Promise(resolve => {
const interval = setInterval(() => {
const element = document.querySelectorAll(selector);
if (element[0]) {
clearInterval(interval);
resolve(element);
}
}, 100); // 100ミリ秒ごとに要素を検索
});
}
</script>
';
});