एक Customizer नियंत्रण में कई इनपुट


16

कहो कि मेरे पास एक एकल कस्टम नियंत्रण है, लेकिन इस नियंत्रण में 2 इनपुट हैं जिन्हें सहेजना आवश्यक है, जैसे:

  • मुद्रा प्रकार और मूल्य
  • आकार और माप की इकाई
  • पहला और आखरी नाम
  • पाठ और शैली
  • छवि और छवि का आकार
  • फ़ॉन्ट परिवार और फ़ॉन्ट वजन

मैं यह कैसे करूंगा? मैं देखता हूं कि नियंत्रण बनाते समय सेटिंग्स विकल्प होता है, लेकिन यह सुझाव देने के लिए कोई दस्तावेज नहीं है कि इसका उपयोग कैसे किया जाता है, और इसका एकमात्र उदाहरण जंगली में किया जा रहा है आसान Google फ़ॉन्ट्स है, जिसका कोई स्पष्टीकरण नहीं है कि यह कैसे किया जाता है, और पढ़ना मुश्किल है। क्या यह घोंसला नियंत्रण और वर्गों के लिए संभव है?

अब तक मैंने जितने भी ट्यूटोरियल्स और डॉक्यूमेंटेशन देखे हैं उनमें से एक ही html इनपुट के साथ कंट्रोल के बारे में बात करता है, किसी में भी ऐसे कंट्रोल्स का उल्लेख नहीं है, जिनके पास कई इनपुट्स / सेटिंग्स हों, इसके बावजूद यह API द्वारा सुझाया गया है।


क्या वर्डप्रेस थीम कस्टमाइज़ेशन एपीआई: codex.wordpress.org/Theme_Customization_API या सेटिंग्स API: codex.wordpress.org/Settings_API के साथ कस्टम नियंत्रण का उपयोग किया जाता है ?
राहेल बेकर

विषय आधुनिक क्या मेरी परीक्षण अब तक का इस्तेमाल किया है, हालांकि मैं या तो के लिए कोई वरीयता है, और एक या फिर दोनों के लिए एक स्पष्टीकरण स्वीकार करेगा
टॉम जम्मू नॉवेल

जवाबों:


17

यह प्लगइन यह दर्शाता है कि यह कैसे करना है। ध्यान दें, इसमें शामिल कदम हैं:

  • अद्यतन / बदलने के लिए प्रत्येक सेटिंग को पंजीकृत करें
  • नियंत्रण बनाते समय, सेटिंग तर्क के रूप में एक सरणी पास करें
  • इनपुट्स का प्रतिपादन करते समय, लिंक कुंजी और मान के लिए सेटिंग कुंजी में पास करें
  • सेटिंग्स कुंजी सेटिंग का नाम नहीं है, लेकिन सरणी के सूचकांक, जैसे 0, 1, 2
  • के माध्यम से एक नियंत्रण के लिए पंजीकृत सेटिंग्स का उपयोग $this->settings

यहाँ कोड है:

<?php
/*
Plugin Name: TJN Typography Control Demo
Author: Tom J Nowell
Version: 1.0
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/

add_action( 'customize_register', 'tjn_customize_register' );
function tjn_customize_register( $wp_customize ) {
    if ( ! isset( $wp_customize ) ) {
        return;
    }
    if ( class_exists( 'WP_Customize_Control' ) ) {

        class Toms_Control_Builder extends WP_Customize_Control {

            public $html = array();

            public function build_field_html( $key, $setting ) {
                $value = '';
                if ( isset( $this->settings[ $key ] ) )
                    $value = $this->settings[ $key ]->value();
                $this->html[] = '<div><input type="text" value="'.$value.'" '.$this->get_link( $key ).' /></div>';
            }

            public function render_content() {
                $output =  '<label>' . $this->label .'</label>';
                echo $output;
                foreach( $this->settings as $key => $value ) {
                    $this->build_field_html( $key, $value );
                }
                echo implode( '', $this->html );
            }

        }

        $section = new TJN_Customizer_Section( $wp_customize, 'test', 'Test', 11 );
        $field = new TJN_Customizer_Field( 'testfield','','Test Control' );
        $field->add_to_section( $wp_customize, $section );
    }
}


class TJN_Customizer_Section {
    public $name='';
    public $pretty_name='';
    public function __construct( WP_Customize_Manager $wp_customize, $name, $pretty_name, $priority=25 ) {
        $this->name = $name;
        $this->pretty_name = $pretty_name;

        $wp_customize->add_section( $this->getName(), array(
            'title'          => $pretty_name,
            'priority'       => $priority,
            'transport'      => 'refresh'
        ) );
    }

    public function getName() {
        return $this->name;
    }
    public function getPrettyName() {
        return $this->pretty_name;
    }
}

class TJN_Customizer_Field {

    private $name;
    private $default;
    private $pretty_name;

    public function __construct( $name, $default, $pretty_name ) {
        $this->name = $name;
        $this->default = $default;
        $this->pretty_name = $pretty_name;
    }

    public function add_to_section( WP_Customize_Manager $wp_customize, TJN_Customizer_Section $section ) {

        $wp_customize->add_setting( $this->name, array(
            'default'        => $this->default,
            'type'           => 'theme_mod',
            'capability'     => 'edit_theme_options'
        ) );
        $wp_customize->add_setting( 'moomins', array(
            'default'        => $this->default,
            'type'           => 'theme_mod',
            'capability'     => 'edit_theme_options'
        ) );
        $wp_customize->add_setting( 'papa', array(
            'default'        => $this->default,
            'type'           => 'theme_mod',
            'capability'     => 'edit_theme_options'
        ) );

        $control = new Toms_Control_Builder(
            $wp_customize, $this->name, array(
            'label'    => $this->pretty_name,
            'section'  => $section->getName(),
            'settings'   => array (
                $this->name,
                'moomins',
                'papa'
            )
        ) );

        $wp_customize->add_control( $control );
    }
}

2
बस मुझे जो चाहिए था, अब मैं चैन की नींद सो सकता हूं
चिफ्लिइइ जूल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.