গ্যালারী জন্য মিডিয়া পরিচালক উন্নত


29

আমি গ্যালারী ভিউতে ওয়ার্ডপ্রেস ৩.৫ এর পরে মিডিয়া সম্পাদককে বাড়িয়ে দিতে চাই।
আমি ডান পাশে একটি নতুন নির্বাচন ক্ষেত্র যুক্ত করতে এবং নির্বাচিত মানগুলি গ্যালারী শর্টকোডে প্রেরণ করতে চাই।

এখানে চিত্র বর্ণনা লিখুন

আমি মনে করি, গ্যালারী শর্টকোড wp.media.galleryin wp-includes/js/media-editor.jsোকানোর জন্য ফাংশনটি ডিফল্ট ফাংশন।

আমি একটি নতুন প্যারামিটার যুক্ত করতে চাই এবং মিডিয়া ম্যানেজারের ভিতরে নির্বাচিত ক্ষেত্র থেকে প্যারামিটারের মানগুলি আসে।

আমি বিভিন্ন উত্সের সাথে খেলেছি, বিশেষত এই প্রশ্নটি থেকে , তবে ব্যাকবোন আমার পক্ষে খুব নতুন এবং এটি কীভাবে কাজ করে তা আমি বুঝতে পারি না। আমি হুক দিয়ে খেলেছি print_media_templates, তবে মিডিয়া ভিউতে কোনও ফল নেই।

আমার কোন হুক ব্যবহার করা উচিত?

উত্তর:


21

একটি ছোট উত্স, সম্ভবত একটি প্লাগইন সমাধান তৈরি করতে পারে। পিএইচপি অংশে প্রথমে মিডিয়া ম্যানেজারের ভিতরে থাকা বোতামের জাভাস্ক্রিপ্ট অন্তর্ভুক্ত রয়েছে। আরও ব্যবহারযোগ্য উত্তর, তবে @ এক ট্রিক পনিয়ের উত্তর তৈরি এবং সঠিক দিকনির্দেশনা এবং জেএস সমাধান ছিল।

চিত্রটিতে ফলাফল দেখুন: এখানে চিত্র বর্ণনা লিখুন

আকারটি ডিফল্ট আকার না হলে ফলাফল শর্টকোড: এখানে চিত্র বর্ণনা লিখুন

হুক print_media_templatesহ'ল সঠিক জায়গা হ'ল বোতামটি, মার্কআপ অন্তর্ভুক্ত করার জন্য। এছাড়াও একটি স্ক্রিপ্ট সারণী ছিল, নিয়ন্ত্রণ সংযোজন জন্য সমাধান আছে।

class Custom_Gallery_Setting {
    /**
     * Stores the class instance.
     *
     * @var Custom_Gallery_Setting
     */
    private static $instance = null;


    /**
     * Returns the instance of this class.
     *
     * It's a singleton class.
     *
     * @return Custom_Gallery_Setting The instance
     */
    public static function get_instance() {

        if ( ! self::$instance )
            self::$instance = new self;

        return self::$instance;
    }

    /**
     * Initialises the plugin.
     */
    public function init_plugin() {

        $this->init_hooks();
    }

    /**
     * Initialises the WP actions.
     *  - admin_print_scripts
     */
    private function init_hooks() {

        add_action( 'wp_enqueue_media', array( $this, 'wp_enqueue_media' ) );
        add_action( 'print_media_templates', array( $this, 'print_media_templates' ) );
    }


    /**
     * Enqueues the script.
     */
    public function wp_enqueue_media() {

        if ( ! isset( get_current_screen()->id ) || get_current_screen()->base != 'post' )
            return;

        wp_enqueue_script(
            'custom-gallery-settings',
            plugins_url( 'js/custom-gallery-setting.js', __FILE__ ),
            array( 'media-views' )
        );

    }

    /**
     * Outputs the view template with the custom setting.
     */
    public function print_media_templates() {

        if ( ! isset( get_current_screen()->id ) || get_current_screen()->base != 'post' )
            return;

        ?>
        <script type="text/html" id="tmpl-custom-gallery-setting">
            <label class="setting">
                <span>Size</span>
                <select class="type" name="size" data-setting="size">
                    <?php

                    $sizes = apply_filters( 'image_size_names_choose', array(
                        'thumbnail' => __( 'Thumbnail' ),
                        'medium'    => __( 'Medium' ),
                        'large'     => __( 'Large' ),
                        'full'      => __( 'Full Size' ),
                    ) );

                    foreach ( $sizes as $value => $name ) { ?>
                        <option value="<?php echo esc_attr( $value ); ?>" <?php selected( $value, 'thumbnail' ); ?>>
                            <?php echo esc_html( $name ); ?>
                        </option>
                    <?php } ?>
                </select>
            </label>
        </script>
        <?php
    }

}

// Put your hands up...
add_action( 'admin_init', array( Custom_Gallery_Setting::get_instance(), 'init_plugin' ), 20 );

নিম্নলিখিত উত্সটি পিএইচপি, ফাইলের উদাহরণ উত্সে জাভাস্ক্রিপ্ট custom-gallery-setting.js

/**
 * Custom Gallery Setting
 */
( function( $ ) {
    var media = wp.media;

    // Wrap the render() function to append controls
    media.view.Settings.Gallery = media.view.Settings.Gallery.extend({
        render: function() {
            media.view.Settings.prototype.render.apply( this, arguments );

            // Append the custom template
            this.$el.append( media.template( 'custom-gallery-setting' ) );

            // Save the setting
            media.gallery.defaults.size = 'thumbnail';
            this.update.apply( this, ['size'] );
            return this;
        }
    } );
} )( jQuery );

4
বলিহারি! দেখে মনে হয় যে ওয়ার্ডপ্রেস ডেভেলপমেন্ট নতুন মিডিয়া লাইব্রেরি সম্পর্কে মূল বিকাশকারীদের তুলনায় দ্রুত হারে একটি জ্ঞান-ভিত্তি তৈরি করছে;) এবং কীভাবে নয়, @ অট্রিকপনি আবারও তাঁর আর একটি ম্যাজিক ব্যাগের কৌশল প্রকাশ করেছেন, দুজনের কাছেই!
brasofilo

ফ্যান্টাস্টিক। ফলো-আপ প্রশ্ন: শর্টকোডে ডিফল্ট বৈশিষ্ট্যগুলি দমন করার কোনও সহজ উপায় আছে কি? তাহলে [gallery type="thumbnail" ids="1,2"]হয়ে যায় [gallery ids="1,2"]? Pluginচ্ছিকভাবে গ্যালারীটিকে স্লাইডশোতে রূপান্তর করতে আমি একটি প্লাগইনটির জন্য একটি কাস্টম বৈশিষ্ট্য যুক্ত করছি। আমি যখন সাধারণ ডাব্লুপি গ্যালারী দেখানোর কথা বলছি তখন আমি এট্রিবিউটটি দমন করতে চাই। প্লাগইন ডি-অ্যাক্টিভেশনের ফলে, এটি কম ক্রাফ্টের পিছনে ছেড়ে যায়।
কিচিন 10

আমি মনে করি এই বিষয় সম্পর্কে একটি নতুন প্রশ্ন যুক্ত করার একটি ভাল উপায়। শর্টকোডটি এখানে Q / A এর বাইরে।
14:52


@ বেল্টজ, আমি কি আপনাকে এখানে কাস্টম ক্ষেত্র সম্পর্কিত প্রশ্নটি দেখতে বলব: ওয়ার্ডপ্রেস.স্ট্যাকেক্সেঞ্জার / প্রশ্নস / ২6565৫৫২ / ??
ইসতিয়াক আহমেদ

19

আপনি যদি সত্যিই ব্যাকবোন টেম্পলেট ব্যবহার করতে চান তবে আপনার হুকটি সঠিক।

আমি template()গ্যালারী সেটিংস দেখার জন্য ফাংশনটিকে ওভাররাইড না করে HTML টেমপ্লেট সন্নিবেশ করানোর জন্য jQuery ব্যবহার করব Qu তবে আমার ধারণা আপনি ইতিমধ্যে এটি জানেন, তাই আমি ব্যাকবোন সংস্করণ পোস্ট করব:

add_action('print_media_templates', function(){

  // define your backbone template;
  // the "tmpl-" prefix is required,
  // and your input field should have a data-setting attribute
  // matching the shortcode name
  ?>
  <script type="text/html" id="tmpl-my-custom-gallery-setting">
    <label class="setting">
      <span><?php _e('My setting'); ?></span>
      <select data-setting="my_custom_attr">
        <option value="foo"> Foo </option>
        <option value="bar"> Bar </option>        
        <option value="default_val"> Default Value </option>        
      </select>
    </label>
  </script>

  <script>

    jQuery(document).ready(function(){

      // add your shortcode attribute and its default value to the
      // gallery settings list; $.extend should work as well...
      _.extend(wp.media.gallery.defaults, {
        my_custom_attr: 'default_val'
      });

      // merge default gallery settings template with yours
      wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({
        template: function(view){
          return wp.media.template('gallery-settings')(view)
               + wp.media.template('my-custom-gallery-setting')(view);
        }
      });

    });

  </script>
  <?php

});
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.