非同期処理で、Attachment Display Settings のSelectの値を変更する [WordPress]

Author:

下記参照


// 非同期処理で、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>
	';
});