Özelleştirici JS API'sı


10

Tamam, böylece özelleştiricinin JS API'sini kullanarak dinamik olarak yeni panel bölümleri ve denetimleri oluşturmak için kendimi eğitmeye çalışıyorum.

Birkaç gün sinir bozucu oldu ve JS API ile bunu başarmak için kesin yolu alamadım.

Şimdiye kadar, bunu başarmak için yaptığım bir şey ama başarılı olamıyorum:

    // 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();

Hiçbiri bölüm görünmüyor gibi görünüyor ve api.section('section_id').activate()bölümün görünmesini sağlamak için konsolda iki kez çalıştırmak zorunda, aynı kontrol ile.

Yanıtlar:


2

1) Bölümünüzü iki kez aramak zorunda kalacağınız api.ready durumuna belki bağlayabilirsiniz

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

  }
})(jQuery);

Trac'ta "Dinamik olarak eklenen denetimler için API'lerin ve JS ile ayarlanmış özel Bölümler ve Paneller için API'ların henüz WordPress 4.2'den itibaren kullanılamadığını unutmayın. Not # 30741." Tracın "şu anda 4.5 için değil" ile biteceğini okumak, böylece çabalarınız boşuna olabilir = (

2) Referans olarak, wp_customize JS API'sini burada bulabilirsiniz . Bu bağlantı da yararlı olabilir.

3) Üçüncü bir bağlantı için yeterli temsilcim yok, ancak özelleştirici alanları için yardımcı bir çerçeve olan Kirki.org'a bakabilirsiniz. Kirki de Github'da oldukça aktif.

4) PHP tarafında, alanları dinamik olarak sunmak için alan dizinizdeki "active_callback" seçeneğini kullanabilirsiniz.

$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;
  }
}

İyi şanslar.


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.Bu özetliyor. :(
Aniruddh Joshi

-2

Tekerleği yeniden icat etmek yerine, belki de bu çerçeveyi projeleriniz için bir temel olarak göreceksiniz. http://wpshed.com/wordpress-theme-customizer-framework/ .

Bu, öğrenirken ve çerçeveler ararken bulduğum en iyisi. Bu çerçeveyi kendi özel denetimlerinizle genişletebilirsiniz ve aşağıdaki bağlantı, jQuery veya javascript aracılığıyla özelleştirici ve özelleştirici önizleme arasındaki iletişimi anlamanıza ve uygulamanıza yardımcı olacaktır.

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


Merhaba Mohit, cevap için teşekkürler ama verdiğiniz şey asıl soruya cevap vermiyor. Bu çerçeveleri kullandığınızda bile JS API'sini kullanmanız gerekir. Bu fraworks, müşterinin JS API'sini genişletmez ve bu nedenle bu durumda hiçbir işe yaramaz.
Aniruddh Joshi

Merhaba, JS dosyaları için sağladığım diğer bağlantı ile kolayca yönetebilirsiniz. Bunu bu şekilde yapıyorum ve amacımı çözüyorum.
Mohit Aneja

Hmm, JS API'daki kontrol, bölüm ve panel desteği 14 Aralık'ta piyasaya sürülen v4.0 ile geldi ve bahsettiğiniz makale 14 Eylül'de yazıldı. Soruda ne demek istediğimi anlıyor musunuz?
Aniruddh Joshi
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.