Вы отсутствующий editor
в ваших поддержках:
define('MY_POST_TYPE', 'my');
define('MY_POST_SLUG', 'gallery');
function my_register_post_type() {
$args = array (
'label' => 'Gallery',
'supports' => array('title', 'excerpt', 'editor'),
'register_meta_box_cb' => 'my_meta_box_cb',
'show_ui' => true,
'query_var' => true
);
register_post_type(MY_POST_TYPE , $args);
}
add_action('init', 'my_register_post_type');
function my_meta_box_cb() {
add_meta_box(MY_POST_TYPE . '_details' , 'Media Library', 'my_meta_box_details', MY_POST_TYPE, 'normal', 'high');
}
function my_meta_box_details() {
global $post;
$post_ID = $post->ID; // global used by get_upload_iframe_src
printf("<iframe frameborder='0' src=' %s ' style='width: 100%%; height: 400px;'> </iframe>", get_upload_iframe_src('media'));
}
После добавления редактора, при нажатии кнопки «Вставить в пост» вы можете увидеть вставленную ссылку в редакторе , Вероятно, это то, что вам нужно.
При загрузке изображения возникает проблема с исчезающим обменом.
На мой взгляд, вам не нужен дополнительный загрузчик в метаболизме. У вас есть кнопка «Добавить медиа» над редактором - вы можете добавлять изображения, видео или галереи в свой CPT таким образом.
EDIT
Вы можете угробить медиа загрузчик и просто позвонить по умолчанию wp.media
так:
function my_meta_box_details() {
global $post;
// Here we get the current images ids of the gallery
$custom = get_post_custom($post->ID);
$my_gallery = (isset($custom["my_gallery"][0])) ? $custom["my_gallery"][0] : '';
// We display the gallery
?>
<style>
.gallery-item{
width:150px;
display: inline-block;
margin-right: 10px;
}
.gallery-item img{
width: 150px;
}
</style>
<div class="gallery_images">
<?php
$img_array = (isset($my_gallery) && $my_gallery != '') ? explode(',', $my_gallery) : '';
if ($img_array != '') {
foreach ($img_array as $img) {
echo '<div class="gallery-item">'.wp_get_attachment_image($img).'</div>';
}
}
?>
</div>
<p class="separator">
<input id="my_gallery_input" type="hidden" name="my_gallery" value="<?php echo $my_gallery; ?>" data-urls=""/>
<input id="manage_gallery" title="Manage gallery" type="button" value="Manage gallery" />
<input id="empty_gallery" title="Empty gallery" type="button" value="Empty gallery" />
</p>
<script>
jQuery(document).ready(function($) {
$(document).on('click', '#manage_gallery', upload_gallery_button);
function upload_gallery_button(e) {
e.preventDefault();
var $input_field = $('#my_gallery_input');
var ids = $input_field.val();
var gallerysc = '[gallery ids="' + ids + '"]';
wp.media.gallery.edit(gallerysc).on('update', function(g) {
var id_array = [];
var url_array = [];
$.each(g.models, function(id, img){
url_array.push(img.attributes.url);
id_array.push(img.id);
});
var ids = id_array.join(",");
ids = ids.replace(/,\s*$/, "");
var urls = url_array.join(",");
urls = urls.replace(/,\s*$/, "");
$input_field.val(ids);
var html = '';
for(var i = 0 ; i < url_array.length; i++){
html += '<div class="gallery-item"><img src="'+url_array[i]+'"></div>';
}
$('.gallery_images').html('').append(html);
});
}
$(document).on('click', '#empty_gallery', empty_gallery_button);
function empty_gallery_button(e){
e.preventDefault();
var $input_field = $('#my_gallery_input');
$input_field.val('');
$('.gallery_images').html('');
}
});
</script>
<?php
}
function my_metabox_save(){
global $post;
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return;
} elseif(is_object($post)){
$my_gallery = (isset($_POST['my_gallery'])) ? $_POST['my_gallery'] : '';
update_post_meta($post->ID, 'my_gallery', $my_gallery);
}
}
add_action('save_post', 'my_metabox_save');
И удалить editor
из вашего supports
аргумента. Должно быть хорошо.
Проблема в том, что мне не нужен редактор вообще ... я просто хочу, когда когда-либо нажимаю на кнопку «Вставить в сообщение», она должна добавить изображение ниже или вверху медиа-загрузчика ... таким образом, клиент смогут увидеть, сколько и какие изображения он выбрал, и я тоже могу использовать эти изображения ... Просьба посоветовать мне решение, как достичь этого с помощью моего выше кода или чего-то еще, что мне нужно? Спасибо за это заблаговременно – laraib
Я добавил редактор, и он добавляет изображение в редактор, но тем не менее, что uploder исчезает, кроме того, я не хочу, чтобы это изображение в редакторе и вообще не редактировалось ... Как я могу получить эти изображения как галерея и может использовать те изображения, как в галерее или слайдер и т. д. ... ??? – laraib