サラリーの仕事で、大小問わずオリジナルのテーマ作成の依頼がチョイチョイあり、専用のadmin_menuを作る事も多いので、ちょっとしたメモ。
画像の入れ替えを出来るだけ簡単に、という要望が多いので、それに合わせた専用の管理ページを作って、メディアライブラリからAjaxを使って挿入させる。
広告
専用admin_menu にメディアライブラリを呼び込み挿入
見出しの通りのメモ。
wp_enqueue_media();
admin_menuにフックする際にwp_enqueue_mediaをコールしておく。
<p> <img class="hoge__image" src="<?php echo $html;?>" style="width: 300px; height: auto;"> </p> <p> <button class="hoge__select button">メディアライブラリから選択</button> <button class="hoge__clear button">画像をクリア</button> </p> <input type="hidden" class="hoge__ur" name="html" value="<?php echo $html;?>"> <p>
画像確認のHTMLと、メディアライブラリを呼び出すボタンとか設置。
<script> let $uploader = document.getElementsByClassName('hoge') Array.from($uploader).forEach( (item) => { const $url = item.querySelector('.hoge__url') const $image = item.querySelector('.hoge__image') const $select = item.querySelector('.hoge__select') const $clear = item.querySelector('.hoge__clear') let uploader $select.addEventListener('click', (e) => { e.preventDefault() if (uploader) { uploader.open() return } uploader = wp.media({ title: 'メディアの選択またはアップロード', library: { type: 'image' }, button: { text: '選択' }, multiple: false }) uploader.on('select', () => { const images = uploader.state().get('selection') images.forEach( (data) => { const url = data.attributes.url $url.value = url $image.setAttribute('src', url) }) }) uploader.open() }) $clear.addEventListener('click', (e) => { e.preventDefault() $url.value = '' $image.setAttribute('src', '') }) }) </script>
そんでJavascriptを設置して終了。
こんな感じで、画像挿入が分かりやすくなる。
ではでは
おすすめのコンテンツ
広告