2016-06-04 28 views
0
funktioniert

hier ist der Code, den ich von Github Seite bekam:Ich habe Galerie metabox erstellt, aber es nicht

define('MY_POST_TYPE', 'my'); 
    define('MY_POST_SLUG', 'gallery'); 
    function my_register_post_type() { 
    $args = array (
     'label' => 'Gallery', 
     'supports' => array('title', 'excerpt'), 
     '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')); 
    } 

Es ist meine Galerie Seite und Medienbereich schön auf dieser Seite nach oben-loader zeigt, aber es gibt Kein Einfügen in den Post-Button in diesem Uploader und ich kann kein Bild in diesen Post einfügen. Zusätzlich, wenn ich ein Bild von meinem Computer hochlade, habe ich es in den Post-Button eingefügt, sobald ich auf diese Button-Seite klicke, verschwindet mein Media-Uploader-Bildschirm und nichts passiert. was mit meinem Code oder Ansatz falsch ist bitte

Antwort

0

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.

+0

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

+0

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

Verwandte Themen