মেটা বক্স ক্ষেত্রে "আপলোড মিডিয়া" বোতামটি যুক্ত করুন


17

আমার একটি কাস্টম পোস্ট রয়েছে যার একটি মেটা ট্যাগ রয়েছে যা একটি ফাইল আপলোড (ভিডিও ফাইলের জন্য) ব্যবহার করা দরকার। আমি ভাবছি, একটি "আপলোড" বোতাম যুক্ত করার সঠিক উপায় কী যা ওয়ার্ডপ্রেস মিডিয়া আপলোডারকে নির্দেশ করে এবং নির্বাচিত আপলোড করা ফাইলটির urlটিকে পাঠ্য ক্ষেত্রে প্রেরণ করে যা আপলোড বোতামকে সংযুক্ত করে।

আমি প্রকৃত মেটা ট্যাগ বিকল্প তৈরির জন্য কোডটি খুঁজছি না, তবে একটি উপায়ের জন্য আসলে একটি ওয়ার্ডপ্রেস মিডিয়া আপলোড বোতামটি সঠিকভাবে যুক্ত করতে পারি।


আপনি এখানে চেষ্টা করতে পারেন এটি থেকে তৈরি টিউটোরিয়াল এবং সহজ প্লাগইন দেখুন । আমাকে সাহায্য করে ছিল.
Fanky

উত্তর:


13

এই মিডিয়া আপলোডার কঙ্কাল দেখুন । আপনি এটি মেটা বক্সের মতো আপনার কাস্টম মার্কআপেও ব্যবহার করতে পারেন।

একটি ইঙ্গিত, পরীক্ষা করুন যে আপনি কেবল পৃষ্ঠায় স্ক্রিপ্ট ব্যবহার করেন, যেখানে আপনি নিজের মেটা বক্স সক্রিয় করেছেন। অন্যথায় এটি প্রায়শই ডিফল্ট পৃষ্ঠাগুলি এবং আপলোডারে সমস্যা হয়।

এখন আপনার কাস্টম অংশে আপলোডার অন্তর্ভুক্ত করার জন্য গুরুত্বপূর্ণ অংশগুলি সাফ করার একটি প্রচেষ্টা।

প্রথমে মেটা বক্সে একটি বোতাম অন্তর্ভুক্ত করুন:

<input id="upload_image" type="text" size="36" name="upload_image" value="" />
<input id="upload_image_button" type="button" value="Upload Image" />

এখন স্ক্রিপ্টগুলি সারিবদ্ধ করুন:

function my_admin_scripts() {    
    wp_enqueue_script('media-upload');
    wp_enqueue_script('thickbox');
    wp_register_script('my-upload', WP_PLUGIN_URL.'/my-script.js', array('jquery','media-upload','thickbox'));
    wp_enqueue_script('my-upload');
}

function my_admin_styles() {

    wp_enqueue_style('thickbox');
}

// better use get_current_screen(); or the global $current_screen
if (isset($_GET['page']) && $_GET['page'] == 'my_plugin_page') {

    add_action('admin_print_scripts', 'my_admin_scripts');
    add_action('admin_print_styles', 'my_admin_styles');
}

এর শেষ অংশটি আপনার অভ্যন্তরে পুরুবাক্স এবং আপলোডার ব্যবহার করার জন্য আপনার কাস্টম স্ক্রিপ্ট।

jQuery(document).ready( function( $ ) {

    $('#upload_image_button').click(function() {

        formfield = $('#upload_image').attr('name');
        tb_show( '', 'media-upload.php?type=image&amp;TB_iframe=true' );
        window.send_to_editor = function(html) {
           imgurl = $(html).attr('src');
           $('#upload_image').val(imgurl);
           tb_remove();
        }

        return false;
    });

});

2
কোডেক্স পৃষ্ঠার মাধ্যমে কেবলমাত্র একটি ছোট্ট অনুস্মারক admin_print_scriptsবলে যে admin_print_scriptsমূলত ইনলাইন জাভাস্ক্রিপ্ট প্রতিধ্বনিত হত। admin_print_scriptsপ্রশাসক পৃষ্ঠাগুলিতে শৈলী বা স্ক্রিপ্ট সজ্জিত করার জন্য ব্যবহার করা উচিত নয়। admin_enqueue_scriptsপরিবর্তে ব্যবহার করুন।
জুলিয়ান

আমি এই পদ্ধতিটি চেষ্টা করেছি এবং পাঠ্য ইনপুট বাক্সটি #upload_imageকখনই পপুলেট হয় না
মিঃ পাবলো

1
এই উত্তর কাজ করে না। অন্যান্য উত্তর দেখুন।
টুডো

0

সমাধান:

1) আপনার ফাংশন.এফপি এ , প্রয়োজনীয় স্ক্রিপ্টগুলি নিবন্ধ করার জন্য ব্লক যুক্ত করুন:

// add necessary scripts
add_action('plugins_loaded', function(){
  if($GLOBALS['pagenow']=='post.php'){
    add_action('admin_print_scripts', 'my_admin_scripts');
    add_action('admin_print_styles',  'my_admin_styles');
  }
});

function my_admin_scripts(){
  wp_enqueue_script('jquery');
  wp_enqueue_script('media-upload');
  wp_enqueue_script('thickbox');
}

// Proper way to enqueue
// wp_register_script(
//   'my-upload',
//   WP_PLUGIN_URL.'/my-script.js',
//   array('jquery','media-upload','thickbox') /* dependencies */
// );
//
// wp_enqueue_script('my-upload');

function my_admin_styles(){
  wp_enqueue_style('thickbox');
}

2) এবং তারপরে মেটাবক্স ব্লক যুক্ত করুন:

add_action(
  'add_meta_boxes',
  function(){
    add_meta_box(
      'my-metaboxx1', // ID
      'my-metaboxx1-title', // Title
      'func99999', // Callback (Construct function)
      get_post_types(), //screen (This adds metabox to all post types)
      'normal' // Context
    );
 },
 9
);
function func99999($post){
  $url = get_post_meta($post->ID, 'my-image-for-post', true); ?>
  <input id="my_image_URL" name="my_image_URL" type="text"
         value="<?php echo $url;?>" style="width:400px;" />
  <input id="my_upl_button" type="button" value="Upload Image" /><br/>
  <img src="<?php echo $url;?>" style="width:200px;" id="picsrc" />
  <script>
  jQuery(document).ready( function($) {
    jQuery('#my_upl_button').click(function() {
      window.send_to_editor = function(html) {
        imgurl = jQuery(html).attr('src')
        jQuery('#my_image_URL').val(imgurl);
        jQuery('#picsrc').attr("src", imgurl);
        tb_remove();
      }

      formfield = jQuery('#my_image_URL').attr('name');
      tb_show('', 'media-upload.php?type=image&amp;TB_iframe=true' );
      return false;
    }); // End on click
  });
  </script>
<?php
}

add_action('save_post', function ($post_id) {
  if (isset($_POST['my_image_URL'])){
    update_post_meta($post_id, 'my-image-for-post', $_POST['my_image_URL']);
  }
});





আপনার যদি একাধিক ক্ষেত্রের প্রয়োজন হয় তবে আপনি খুব সহজেই এটি করতে পারেন: http://pastebin.com/raw/xpU1ch2W


একটি কবজ মত কাজ করে, কিন্তু শুধুমাত্র ইমেজ সঙ্গে। ভিডিও ফাইলগুলি দিয়ে আমি কীভাবে এটি করতে পারি?
অ্যালেক্স
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.