2014-12-17 4 views
4

저는 WordPress에 대해 질문이 있습니다. 게시물 추가/편집에서 슬라이더 추가 버튼을 추가했습니다.미디어 창 (Wordpress)에서 그림 선택 후 사용자 정의 필드 추가/업데이트

jQuery(function($){ 
$(document).ready(function(){ 
    $('#insert-my-media').click(open_media_window); 
}) 

function open_media_window(){ 
    if (this.window === undefined) { 
     this.window = wp.media({ 
      title: 'Insert a media', 
      library: {type:'image'}, 
      multiple: true, 
      button: {text:'Insert'} 
     }); 

     var self = this; //needed to retrieve the function below 
     this.window.on('select',function(){ 
      var files = self.window.state().get('selection').toArray(); 
      var values; 
      for (var i = 0; i < files.length; i++) { 
       var file = files[i].toJSON(); 
       if(values===undefined){ 
        var values = file.url; 
       } 
       else{ 
        var values = values+','+file.url; 
       } 
      }; 
      wp.media.editor.insert(values); 
     }); 
    } 

    this.window.open(); 
    return false; 
} 
}); 

사용자가 미디어 창을 눌러 삽입 버튼에서 사진을 선택한 후이 사진의 URL 값을 추가합니다

//Add button to create slider 
add_action('media_buttons','add_my_media_button',15); 

function add_my_media_button(){ 
    echo '<a href="#" id="insert-my-media" class="button">Add Slider</a>'; 
} 

function include_media_button_js_file(){ 
    wp_enqueue_script('media_button',get_bloginfo('template_directory').'/js/media_button.js',array('jquery'),'1.0',true); 
} 

add_action('wp_enqueue_media','include_media_button_js_file'); 

이 내 media_button.js 코드 : 여기 내 내 function.php 코드입니다 콘텐츠 편집기 게시물 상자에.

제 질문은이 값을 사용자 지정 필드 상자에 자동으로 추가하고 사용자 지정 필드 단추를 클릭하지 않고 자동으로 추가/업데이트하는 방법입니다.

그래서 사용자는 워드 프레스의 화면 옵션에서 포스트 편집기에서 볼 수있는 사용자 정의 필드보기/확인없이 해당 사진 URL에 대한 사용자 정의 필드를 추가/업데이트 할 수 있습니다.

감사합니다. 감사합니다. 고마워요.

+0

누군가가 같은 문제가 있거나 문제를 해결할 수 있습니까?, 도와주세요. 내 플러그인을 완성하기위한 한 걸음 더. –

답변

2

나는 .. 이런 식으로

$(document).ready(function(){ 
    // $('#insert-my-media').click(open_media_window); 
    if($('#images_id').val() != '' && $('#images_url').val() != ''){ 
     $('#open_media').text("Edit Slider"); 
    } 
    $('#open_media').click(function(e){ 
     e.preventDefault(); 
     var target = $('#images_id'); 
     var target_url = $('#images_url'); 
     var btnSave = $('#publishing-action input.button'); 

     if(target.val() == '' && target_url.val() == ''){ 

      var wpmedia = wp.media({ 
       title: 'Insert a media', 
       library: {type:'image'}, 
       multiple: true, 
       button: {text:'Insert'} 
      }); 

      wpmedia.on('select', function(){ 
       var ids = []; 
       var urls = []; 
       var models = wpmedia.state().get('selection').toArray(); 
       for (var i = 0; i < models.length; i++) { 
        var file = models[i].toJSON(); 
        ids.push(file.id); 
        urls.push(file.url); 
       }; 
       target.val(ids.join(",")); 
       target_url.val(urls.join(",")); 
       $('#deleting_slider').val(""); 
       $('#open_media').text("Adding..."); 
       btnSave.click(); 
      }); 
      wpmedia.open(); 
     }else{ 
      wp.media.gallery 
      .edit('[gallery ids="'+ target.val() +'" urls="'+ target_url.val() +'"]') 
      .on('update', function(g){ 
       var ids = []; 
       var urls = []; 
       for (var i = 0; i < g.models.length; i++) { 
        var file = g.models[i].toJSON(); 
        ids.push(file.id); 
        urls.push(file.url); 
       }; 
       target.val(ids.join(",")); 
       target_url.val(urls.join(",")); 
       $('#deleting_slider').val(""); 
       $('#open_media').text("Editing..."); 
       btnSave.click(); 
      }); 
     } 

    }); 

    $('#save_desc').click(function(e){ 
     e.preventDefault(); 
     var target = $('#desc_editor'); 
     var btnSave = $('#publishing-action input.button');   
       target.val(target.val()); 
       btnSave.click(); 
    }); 

    $('#delete_slider').click(function(e){ 
     e.preventDefault(); 
     /*var target = $('#images_id'); 
     var target_url = $('#images_url');*/ 
     var btnSave = $('#publishing-action input.button'); 
      /*target.val(""); 
      target_url.val("");*/ 
      $('#deleting_slider').val("Deleting..."); 
      $('#delete_slider').text("Deleting..."); 
      btnSave.click(); 
    }); 

    }); 

을 내 JQuery와/JS를 수정 한 다음 나는 파일이 METABOX 나는 경우 문제 해결 폐쇄 상기

<?php 


function koplan_add_metabox(){ 
add_meta_box(
     'koplan_metabox_gallery', 
     'Slider Gallery', 
     'koplan_show_metabox', 
     'post' 
); 
} 
function koplan_add_maps_metabox(){ 
    add_meta_box(
      'koplan_metabox_maps', 
     'Maps Descriptions', 
     'koplan_show_maps_metabox', 
     'post' 
); 
} 
function koplan_show_metabox($post){ 
$ids = get_post_meta($post->ID, 'gallery_images', true); 
$urls = get_post_meta($post->ID,'images',true); 
?> 
<a href="#" id="open_media" class="button">Add Slider</a> 
<hr> 
<input type="hidden" name="gallery_images" id="images_id" value="<?php echo $ids; ?>"> 
<input type="hidden" name="gallery_urls" id="images_url" value="<?php echo $urls; ?>"> 
<input type="hidden" name="deleting_slider_post_meta" id="deleting_slider" value="<?php echo $urls; ?>"> 
<?php 

    if($ids=="" and $urls==""){ 
     return; 
    } 
    else{ 
     echo do_shortcode('[gallery ids="'.$ids.'" urls="'.$urls.'"]'); 
    } 
?> 
<hr> 
<a href="#" id="delete_slider" name="delete_slider_post_meta" class="button">Delete Slider</a> 
<?php 
} 

function koplan_save_gallery_metabox($post_id){ 
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { 
     return; 
} 

    if(! isset($_POST['gallery_images']) && !isset($_POST['gallery_urls'])){ 
     return; 
    } 

    $ids = sanitize_text_field($_POST['gallery_images']); 
    $urls = sanitize_text_field($_POST['gallery_urls']); 

    $terms = wp_get_object_terms($post_id, 'category', array('fields' => 'names')); 
     /*$termsname = $terms[0]->name;*/ 
     if(strlen($terms[1]) > strlen($terms[0])){ 
      $term = $terms[1]; 
     } 
     else{ 
      $term = $terms[0]; 
     } 

    $sldata = '<slider images="'.$term.'" />'; 
    update_post_meta($post_id, 'slider', $sldata); 
    update_post_meta($post_id, 'gallery_images', $ids); 
    update_post_meta($post_id, 'images', $urls); 

    if(isset($_POST['deleting_slider_post_meta']) && $_POST['deleting_slider_post_meta'] != ""){ 
     delete_post_meta($post_id, 'slider', $sldata); 
     delete_post_meta($post_id, 'gallery_images', $ids); 
     delete_post_meta($post_id, 'images', $urls); 
    } 
    } 

function koplan_show_maps_metabox($post){ 
    $desc = get_post_meta($post->ID,'mapsdesc',true); 
    if($desc!=""){ 
?> 
    <textarea name="maps_descriptions" id="desc_editor" placeholder="Insert Descriptions Here" class="wp-editor-area" cols="40" autocomplete="off" style="height:320px; width:100%;"><?php echo $desc; ?></textarea> 
<?php 
}else{ 
?> 
<textarea name="maps_descriptions" id="desc_editor" placeholder="Insert Descriptions Here" class="wp-editor-area" cols="40" autocomplete="off" style="height:320px; width:100%;"></textarea> 
<?php 
} 
?> 
<hr> 
<a href="#" class="button" id="save_desc">Save</a> 
<?php 
} 

function koplan_save_maps_desc_metabox($post_id){ 
if (define('DOING_AUTOSAVE') && DOING_AUTOSAVE){ 
    return; 
} 
if(!isset($_POST['maps_descriptions'])){ 
    return; 
} 
$desc = $_POST['maps_descriptions']; 
update_post_meta($post_id,'mapsdesc',$desc); 
} 

add_action('add_meta_boxes', 'koplan_add_metabox'); 
add_action('add_meta_boxes','koplan_add_maps_metabox'); 
add_action('save_post', 'koplan_save_gallery_metabox'); 
add_action('save_post', 'koplan_save_maps_desc_metabox'); 

?> 

을 만들 metabox.php라고합니다. 고마워요, 덕분에 stackoverflow