একটি কাস্টমাইজার নিয়ন্ত্রণে একাধিক ইনপুট


16

বলুন আমার একক কাস্টম নিয়ন্ত্রণ রয়েছে তবে এই নিয়ন্ত্রণটিতে 2 টি ইনপুট রয়েছে যার সংরক্ষণের প্রয়োজন হয়, যেমন:

  • মুদ্রার ধরণ এবং মান
  • আকার এবং পরিমাপের একক
  • নামের প্রথম এবং শেষাংশ
  • পাঠ্য এবং শৈলী
  • চিত্র এবং চিত্রের আকার
  • হরফ পরিবার এবং ফন্টের ওজন

আমি এটা কিভাবে করব? আমি একটি নিয়ন্ত্রণ তৈরি করার সময় একটি সেটিংস বিকল্প আছে দেখছি, তবে এটি কীভাবে ব্যবহার করা হয় তা নির্দেশ করার জন্য কোনও ডকুমেন্টেশন নেই, এবং বন্যের মধ্যে এটির একমাত্র উদাহরণ হ'ল ইজি গুগল ফন্টস, এটি কীভাবে হয়েছে তার কোনও ব্যাখ্যা নেই এবং পড়া কঠিন। নীড় নিয়ন্ত্রণ এবং বিভাগগুলি কি সম্ভব?

এখনও অবধি সমস্ত টিউটোরিয়াল এবং ডকুমেন্টেশন আমি একটি একক এইচটিএমএল ইনপুট দিয়ে একটি নিয়ন্ত্রণ সম্পর্কে আলোচনা পেয়েছি, এপিআই দ্বারা প্রস্তাবিত হওয়া সত্ত্বেও, একাধিক ইনপুট / সেটিংস রয়েছে এমন নিয়ন্ত্রণগুলির উল্লেখ নেই


ওয়ার্ডপ্রেস থিম কাস্টমাইজেশন এপিআই: কোডেক্স.ওয়ার্ডপ্রেস.আর. / থিম_কাস্টমাইজেশন_এপিআই বা সেটিংস এপিআই: কোডেক্স.ওয়ার্ডপ্রেস.আর . / সেটিং_এপিআইয়ের সাথে কাস্টম নিয়ন্ত্রণ ব্যবহার করা হয় ?
রাচেল বাকের

থিম মোডটি আমার পরীক্ষাগুলি এখনও অবধি ব্যবহার করেছে, যদিও আমার উভয়ের পক্ষে কোনও পছন্দ নেই, এবং একটি বা অন্য বা উভয়ের জন্য একটি ব্যাখ্যা গ্রহণ করব
টম জে নওয়েল

উত্তর:


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
আমার যা প্রয়োজন, এখন আমি শান্তিতে ঘুমাতে যেতে পারি
chifliiiii
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.