API JS di personalizzazione


10

Va bene, quindi ho cercato di educare me stesso a creare nuove sezioni di pannelli e controlli in modo dinamico utilizzando l'API JS del personalizzatore.

Sono stati frustranti alcuni giorni e non sono stato in grado di ottenere il modo esatto per raggiungere questo obiettivo tramite l'API JS.

Finora, questa è una cosa che sto facendo per realizzarlo, ma senza successo:

    // for Settings
    api.create( 
        params.id, 
        params.id, 
        params.default, 
        params.args 
    );

    // for controls
    var controlConstructor = api.controlConstructor[params.type];
    var control = new controlConstructor(params.id, {
        params: params,
        previewer: api.previewer
    });
    api.control.add( 
        params.id, 
        control 
    );

     //for Sections
     var section = new api.Section(params.id, { 
        params: params
     }); 
    api.section.add( params.id, section );
    api.section('section_id').activate();

Nessuno di loro sembra funzionare poiché la sezione non viene visualizzata e devo eseguire api.section('section_id').activate()due volte in console per visualizzare la sezione, lo stesso vale per il controllo.

Risposte:


2

1) Forse si legano allo stato api.ready che potrebbe risolvere la necessità di chiamare la sezione due volte

(function($, api){
  api.bind( 'ready', function() {...

  }
})(jQuery);

Ho visto una nota in trac che diceva "Nota che le API per i controlli aggiunti dinamicamente e le API per le sezioni e i pannelli personalizzati basati su JS non sono ancora disponibili a partire da WordPress 4.2. Vedi # 30741". Leggere che trac termina con "probabilmente non per 4.5 in questo momento", quindi i tuoi sforzi potrebbero essere inutili = (

2) Per riferimento, l'API JS wp_customize è disponibile qui . Anche questo link può essere utile.

3) Non ho abbastanza rappresentante per un terzo link, ma potresti guardare Kirki.org che è un framework di supporto per i campi di personalizzazione. Kirki è piuttosto attivo anche su Github.

4) Sul lato PHP, puoi usare l'opzione "active_callback" sul tuo array di campi per presentare dinamicamente i campi.

$wp_customize->add_control( 'some_single_page_specific_option', array(
  'label'           => esc_html__( 'Single Page Option' ),
  'section'         => 'my_page_options',
  'active_callback' => 'if_is_singular',
));

function if_is_singular(){
  if( is_singular() ){
    return true;
  } else {
    return false;
  }
}

In bocca al lupo.


1
Note that the APIs for dynamically-added controls, and APIs for JS-templated custom Sections and Panels are not yet available as of WordPress 4.2.Questo lo riassume. :(
Aniruddh Joshi

-2

Suggerirei invece di reinventare la ruota, forse considererai questo quadro come base per i tuoi progetti. http://wpshed.com/wordpress-theme-customizer-framework/ .

Questo è il migliore che ho trovato mentre stavo imparando e cercando quadri. Puoi estendere questo framework con i tuoi controlli personalizzati e il link sottostante ti aiuterà a comprendere e implementare la comunicazione tra customizer e customizer-preview tramite jQuery o javascript.

https://conductorplugin.com/developing-wordpress-customizer-part1/


Ciao Mohit, grazie per la risposta ma ciò che hai fornito non risponde alla domanda reale. Anche quando si utilizzano questi framework, è comunque necessario utilizzare l'API JS. Questi fraworks non estendono l'API JS del personalizzatore e quindi non servono in questo caso.
Aniruddh Joshi,

Ciao, puoi facilmente gestirlo con l'altro link che ho fornito per i file JS. Lo sto facendo in questo modo e risolvo il mio scopo.
Mohit Aneja,

Hmm, il supporto per il controllo, la sezione e il pannello nell'API JS sono stati forniti con la versione 4.0 che è stata lanciata il 14 dicembre e l'articolo a cui ti riferisci è stato scritto il 14 settembre. Hai capito cosa intendevo dire nella domanda?
Aniruddh Joshi,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.