2016-06-04 2 views
0

вот код, который я получил от GitHub страницы:я создал галерею METABOX, но он не работает

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')); 
    } 

Это показывает мою галерею страницу и медиа вверх загрузчик раздел на этой странице, красиво, но есть нет вставки в кнопку сообщения внутри этого загрузчика, и я не могу вставить изображение в этот пост. Кроме того, если я загружаю изображение с моего компьютера, он вставляет в кнопку сообщения, как только я нажимаю на эту страницу на странице, мой экран загрузки мультимедиа исчезает, и ничего не происходит? что случилось с моим кодом или подходом, пожалуйста

ответ

0

Вы отсутствующий 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 аргумента. Должно быть хорошо.

+0

Проблема в том, что мне не нужен редактор вообще ... я просто хочу, когда когда-либо нажимаю на кнопку «Вставить в сообщение», она должна добавить изображение ниже или вверху медиа-загрузчика ... таким образом, клиент смогут увидеть, сколько и какие изображения он выбрал, и я тоже могу использовать эти изображения ... Просьба посоветовать мне решение, как достичь этого с помощью моего выше кода или чего-то еще, что мне нужно? Спасибо за это заблаговременно – laraib

+0

Я добавил редактор, и он добавляет изображение в редактор, но тем не менее, что uploder исчезает, кроме того, я не хочу, чтобы это изображение в редакторе и вообще не редактировалось ... Как я могу получить эти изображения как галерея и может использовать те изображения, как в галерее или слайдер и т. д. ... ??? – laraib

Смежные вопросы