নেপালের স্থানীয় গ্যালারী সেটিংসে কাস্টম ক্ষেত্রগুলি যুক্ত করুন


14

আমি ইতিমধ্যে সমাধানের জন্য অনুসন্ধান করেছি এবং অনেকগুলি অমীমাংসিত বা অপ্রচলিত বিষয় পেয়েছি।

কাস্টম ওয়ার্ডপ্রেস গ্যালারী বিকল্প | ডিফল্ট গ্যালারী জন্য কাস্টম ক্ষেত্র

তবে, আমি গ্যালারী শর্টকাটে বৈশিষ্ট্য যুক্ত করতে কিছু কাস্টম ক্ষেত্র (চেকবক্স, চক্রব্যাটন ইত্যাদি) যুক্ত করতে চাই। কারও কি কিছু স্নিপস আছে?


সম্পাদনা: পরিশেষে Ive এই https://wordpress.org/support/topic/how-to-add-fields-to-gallery-settings এবং এটি করার জন্য যা করতে চাইছে সবগুলি খুঁজে পেয়েছি। :) rownn


সম্পাদনা: উপরের লিঙ্কের উপর ভিত্তি করে আমি নিম্নলিখিত লাইনগুলি লিখেছি।

add_action('print_media_templates', function(){
?>
<script type="text/html" id="tmpl-custom-gallery-setting">
    <h3 style="z-index: -1;">___________________________________________________________________________________________</h3>
    <h3>Custom Settings</h3>

    <label class="setting">
        <span><?php _e('Text'); ?></span>
        <input type="text" value="" data-setting="ds_text" style="float:left;">
    </label>

    <label class="setting">
        <span><?php _e('Textarea'); ?></span>
        <textarea value="" data-setting="ds_textarea" style="float:left;"></textarea>
    </label>

    <label class="setting">
        <span><?php _e('Number'); ?></span>
        <input type="number" value="" data-setting="ds_number" style="float:left;" min="1" max="9">
    </label>

    <label class="setting">
      <span><?php _e('Select'); ?></span>
      <select data-setting="ds_select">
        <option value="option1"> 'Option-1' </option>
        <option value="option2"> 'Option-2' </option>
      </select>
    </label>

    <label class="setting">
        <span><?php _e('Bool'); ?></span>
        <input type="checkbox" data-setting="ds_bool">
    </label>

</script>

<script>

    jQuery(document).ready(function()
    {
        _.extend(wp.media.gallery.defaults, {
        ds_text: 'no text',
        ds_textarea: 'no more text',
        ds_number: "3",
        ds_select: 'option1',
        ds_bool: false,
        ds_text1: 'dummdideldei'
        });

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

    });

</script>
<?php

});

UI ইউজারআইন্টারফেস শর্ট কোড শর্টকোড

পার্থক্য পাশে কাজ করে: সংখ্যা ক্ষেত্রটি শর্টকোড দ্বারা ভরাট হয় না। আমি বিশ্বাস করি এর কারণ হ'ল এইচটিএমএল-ইনপুট-ট্যাগ প্রকার "নম্বর" কেবল "মান" এর জন্য পূর্ণসংখ্যাকে গ্রহণ করে। Ds_number এর স্ট্রিংটি ইন্টিতে পরিবর্তন করতে কোডে আমাকে কী যুক্ত করতে হবে?

শুভেচ্ছা রওনা হয়েছে


2
আপনার কোড পোস্ট করুন, কাজ বা না।
s_ha_dum

আমি ধরা! আমার কোন কোড নেই আমি স্নিপস জিজ্ঞাসা করার এটি একটি ঘন উপায় জানি, কিন্তু আমার কোনও ধারণা নেই। : / আমি একটি ওয়ার্কিং কোড এটি কীভাবে কাজ করে তা বিশ্লেষণ করতে চেয়েছিলাম। আমি যোগ এবং সংরক্ষণের জন্য অ্যাডঅ্যাকশন () দিয়ে এটি পরিচালনা করতে আইভিকে জানি, তবে নির্দিষ্ট স্থানে নির্দিষ্ট প্রকারগুলি কীভাবে তৈরি করা যায় তা আমি জানি না।
39

@ উদয়, আপনার প্রশ্নটি সম্পাদনা করার পরিবর্তে উত্তর হিসাবে আপনার কোড পোস্ট করা উচিত - তবে এটি গ্রহণ করুন: :)
জেন

উত্তর:


1

আপনার কোডের জন্য ধন্যবাদ। আমি এই সমস্যাটি আরও তদন্ত করেছি (এটি কোনও পূর্ণসংখ্যার বিন্যাসের সমস্যা নয়)। আমি সংখ্যা ক্ষেত্রগুলির জন্য একমাত্র সমাধানটি নিয়ে এসেছি, আরও ডাব্লুপি জেএস বানরের প্যাচ। পরিবর্তনগুলির সাথে পুরো কোডটি এখানে দেওয়া হয়েছে যা কোনও ইনপুট প্রকার সমর্থন করে:

add_action('print_media_templates', function(){
?>
<script type="text/html" id="tmpl-custom-gallery-setting">
    <h3>Custom Settings</h3>

    <label class="setting">
        <span><?php _e('Text'); ?></span>
        <input type="text" value="" data-setting="ds_text" style="float:left;">
    </label>

    <label class="setting">
        <span><?php _e('Textarea'); ?></span>
        <textarea value="" data-setting="ds_textarea" style="float:left;"></textarea>
    </label>

    <label class="setting">
        <span><?php _e('Number'); ?></span>
        <input type="number" value="" data-setting="ds_number" style="float:left;" min="1" max="9">
    </label>

    <label class="setting">
      <span><?php _e('Select'); ?></span>
      <select data-setting="ds_select">
        <option value="option1"> 'Option-1' </option>
        <option value="option2"> 'Option-2' </option>
      </select>
    </label>

    <label class="setting">
        <span><?php _e('Bool'); ?></span>
        <input type="checkbox" data-setting="ds_bool">
    </label>

</script>

<script>

    jQuery(document).ready(function()
    {
        _.extend(wp.media.gallery.defaults, {
        ds_text: 'no text',
        ds_textarea: 'no more text',
        ds_number: "3",
        ds_select: 'option1',
        ds_bool: false,
        ds_text1: 'dummdideldei'
        });

        wp.media.view.Settings.Gallery = wp.media.view.Settings.Gallery.extend({
        template: function(view){
          return wp.media.template('gallery-settings')(view)
               + wp.media.template('custom-gallery-setting')(view);
        },
        // this is function copies from WP core /wp-includes/js/media-views.js?ver=4.6.1
        update: function( key ) {
          var value = this.model.get( key ),
            $setting = this.$('[data-setting="' + key + '"]'),
            $buttons, $value;

          // Bail if we didn't find a matching setting.
          if ( ! $setting.length ) {
            return;
          }

          // Attempt to determine how the setting is rendered and update
          // the selected value.

          // Handle dropdowns.
          if ( $setting.is('select') ) {
            $value = $setting.find('[value="' + value + '"]');

            if ( $value.length ) {
              $setting.find('option').prop( 'selected', false );
              $value.prop( 'selected', true );
            } else {
              // If we can't find the desired value, record what *is* selected.
              this.model.set( key, $setting.find(':selected').val() );
            }

          // Handle button groups.
          } else if ( $setting.hasClass('button-group') ) {
            $buttons = $setting.find('button').removeClass('active');
            $buttons.filter( '[value="' + value + '"]' ).addClass('active');

          // Handle text inputs and textareas.
          } else if ( $setting.is('input[type="text"], textarea') ) {
            if ( ! $setting.is(':focus') ) {
              $setting.val( value );
            }
          // Handle checkboxes.
          } else if ( $setting.is('input[type="checkbox"]') ) {
            $setting.prop( 'checked', !! value && 'false' !== value );
          }
          // HERE the only modification I made
          else {
            $setting.val( value ); // treat any other input type same as text inputs
          }
          // end of that modification
        },
        });
    });

</script>
<?php

1
দেখে মনে হচ্ছে "wp.media.gallery.defaults" এখন "wp.media.galleryDefaults"
লোকোমো
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.