Sie editor
in Ihrer Unterstützungen fehlen:
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'));
}
Sobald Sie den Editor hinzufügen, wenn Sie ‚Einfügen in Post‘ klicken, können Sie den eingefügten Link im Editor sehen . Welches ist vermutlich was du brauchst.
Es gibt ein Problem mit dem Verschwinden der Metabox, wenn Sie das Bild hochladen.
Meiner Meinung nach brauchen Sie nicht wirklich den zusätzlichen Uploader in einer Metabox. Sie haben die Schaltfläche "Medien hinzufügen" über dem Editor - Sie können auf diese Weise Bilder, Videos oder Galerien in Ihrem CPT hinzufügen.
EDIT
Sie den Medien Uploader Graben könnte und rufen Sie einfach die Standard-wp.media
wie folgt aus:
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');
Und die editor
von Ihrem supports
Argument entfernen. Sollte gut funktionieren.
Das Problem ist, dass ich Editor überhaupt nicht will ... ich will nur, wenn ich auf die Schaltfläche zum Einfügen klicken, sollte es Bild unten oder oben auf dem Medien-Uploader hinzufügen ... auf diese Weise Client kann sehen, wie viele und welche Bilder er/sie ausgewählt hat und ich kann diese Bilder auch verwenden ... Bitte führe mir die Lösung, wie ich dies mit meinem obigen Code erreichen kann oder was ich sonst noch brauche ??? Danke dafür im Voraus – laraib
Ich habe den Editor hinzugefügt und es fügt Bild zum Editor hinzu, aber immer noch, dass uploder disappers, zusätzlich will ich das Bild im Editor und überhaupt keinen Editor ... Wie, kann ich diese Bilder bekommen wie Galerie und kann diese Bilder wie in Galerie oder Slider etc ... verwenden ??? – laraib