PHP側でwp_enqueue_media()
を叩いて、必要なファイルを読み込ませ、JS側でwp.media()
を使うと実装できます。
3.5の時の記事なので細かいところは変わっているかもしれませんが、このあたりを読むといいかと。
https://firegoby.jp/archives/4031
ありがとうございます!
プラグイン化されていたので試したところ表示されました。
しかし、既存の設定画面に入れたかったので、不要そうな部分を消して以下のようにしてみましたが、Javascriptがうまく連動しないのか、動作しませんでした。。。。
下記の囲んだ部分以外は削除してJavascriptは別の方法でheaderに入れました。
<?php
/*
Plugin Name: Media Uploader DEMO
Author: Takayuki Miyauchi
*/
new my_plugin();
class my_plugin {
function __construct()
{
add_action(‘admin_menu’, array(&$this, ‘admin_menu’));
}
public function admin_menu()
{
$hook = add_menu_page(
‘Media DEMO’,
‘Media DEMO’,
‘update_core’,
‘media-uploader-demo’,
array(&$this, ‘admin_page’)
);
add_action(‘admin_print_scripts-‘.$hook, array(&$this, ‘admin_scripts’));
}
public function admin_page()
{
?>
<style type=”text/css”>
#demo-images img
{
max-width: 100px;
max-height: 100px;
margin: 10px;
border: 1px solid #cccccc;
}
</style>
<div class=”wrap”>
<h2>メディアアップローダーのデモ</h2>
<button id=”demo-media”>画像を選択</button>
<div id=”demo-images”></div>
</div><!– .wrap –>
<?php
}
public function admin_scripts()
{
wp_enqueue_media(); // メディアアップローダー用のスクリプトをロードする
// カスタムメディアアップローダー用のJavaScript
wp_enqueue_script(
‘my-media-uploader’,
plugins_url(“media-uploader.js”, __FILE__),
array(‘jquery’),
filemtime(dirname(__FILE__).’/media-uploader.js’),
false
);
}
}