देशी गैलरी सेटिंग्स wp करने के लिए कस्टम फ़ील्ड जोड़ें


14

मैंने पहले ही समाधान खोज लिया और बहुत सारे अनसुलझे या अप्रचलित विषयों को ढूंढ लिया।

कस्टम वर्डप्रेस गैलरी विकल्प | डिफ़ॉल्ट गैलरी के लिए कस्टम फ़ील्ड

हालाँकि, I fields गैलरी शॉर्टकट में विशेषताएँ जोड़ने के लिए कुछ कस्टम फ़ील्ड (चेकबॉक्स, साइकलबटन आदि) जोड़ना पसंद करता है। क्या किसी को कुछ झपकी आती है?


संपादित करें: अंत में 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 उपयोगकर्ताइंटरफेस छोटे संकेत शोर्ट

एवरिथिंग बगल में ठीक काम करता है: शोर्टकोड द्वारा भरा गया फ़ील्ड फ़ील्ड नहीं है। मेरा मानना ​​है कि इसका कारण यह है कि HTML- इनपुट-टैग प्रकार "संख्या" केवल "मान" के लिए पूर्णांक स्वीकार करता है। मुझे ds_number की स्ट्रिंग को int में बदलने के लिए कोड में क्या जोड़ना है?

अभिवादन पंक्तिबद्ध


2
कृपया अपना कोड पोस्ट करें, काम कर रहा है या नहीं।
s_ha_dum

मैं पकड़ा गया! मेरा कोई कोड नहीं है। मैं स्निप्स के लिए पूछने का एक मोटा तरीका जानता हूं, लेकिन मुझे कोई पता नहीं है। : / मैं एक कार्यशील कोड का विश्लेषण करना चाहता था कि यह कैसे काम करता है। मुझे पता है कि इसे जोड़ने और बचाने के लिए add_action () के साथ Ive का प्रबंधन करना है, लेकिन मैं नहीं जानता कि कुछ स्थानों पर कुछ प्रकार कैसे बनाते हैं।
राऊन

@nnnn, आपको अपना कोड प्रश्न को संपादित करने के बजाय एक उत्तर के रूप में पोस्ट करना चाहिए - फिर इसे स्वीकार करें: :)
Jen

जवाबों:


1

आपके कोड के लिए धन्यवाद। मैंने इस समस्या की आगे जांच की है (यह पूर्णांक स्वरूपण समस्या नहीं है)। एकमात्र उपाय जो मैं संख्या क्षेत्रों के लिए आया था, वह अधिक WP JS मंकी पैच है। यहां संशोधनों के साथ संपूर्ण कोड है जो किसी भी इनपुट प्रकार का समर्थन करता है:

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"
locomo
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.