API інтерфейсу користувача


10

Гаразд, тому я намагався навчити себе створювати нові розділи панелей та динамічно керувати, використовуючи JS API для налаштування.

Це неприємно кілька днів, і я не зміг знайти точного способу досягти цього за допомогою API JS.

Поки що це я щось роблю, щоб це відбулося, але без успіху:

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

Жоден з них, здається, не працює, оскільки розділ не з’являється, і мені доведеться запустити api.section('section_id').activate()двічі в консолі, щоб відобразити розділ, те саме є з керуванням.

Відповіді:


2

1) Можливо, прив'яжіться до стану api.ready, який може виправити необхідність виклику вашої секції двічі

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

  }
})(jQuery);

Я побачив примітку в trac, в якій сказано: "Зауважте, що API для динамічно доданих елементів керування та API для користувацьких секцій та панелей, визначених JS, поки що не доступні для WordPress 4.2. Див. # 30741." Прочитавши, що trac закінчується на "ймовірно, не для 4,5 зараз", тому ваші зусилля можуть бути марними = (

2) Для довідки, wp_customize JS API можна знайти тут . Це посилання також може бути корисним.

3) У мене немає достатньої кількості представників для третього посилання, але ви можете подивитися на Kirki.org, який є помічником для полів налаштування. Кіркі також досить активний на Github.

4) На стороні PHP ви можете використовувати параметр "active_callback" на своєму масиві поля для динамічного представлення полів.

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

Удачі.


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.Це підсумовує це. :(
Aniruddh Joshi

-2

Я б запропонував замість того, щоб винаходити колесо, можливо, ви вважатимете цю основу базою для своїх проектів. http://wpshed.com/wordpress-theme-customizer-framework/ .

Цей найкращий я знайшов, коли я навчався та шукав рамки. Ви можете розширити цю рамку за допомогою власних користувальницьких елементів керування, а наведене нижче посилання допоможе вам зрозуміти та реалізувати зв’язок між персоналізатором та попереднім попереднім переглядом через jQuery або javascript.

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


Привіт, Мохіт, дякую за відповідь, але те, що ви надали, не відповідає на власне питання. Навіть коли ви використовуєте ці рамки, ви все одно повинні використовувати JS API. Ці фреймворки не поширюють API JS інтерфейсу, і в цьому випадку вони не дають користі.
Анірудд Джоші

Привіт, ти можеш легко керувати цим іншим посиланням, яке я надав для файлів JS. Я роблю це таким чином і вирішую своє призначення.
Мохіт Анея

Хм, підтримка контролю, секцій та панелей в API JS прийшла з v4.0, який був запущений 14 грудня, а стаття, на яку ви посилаєтесь, написана 14 вересня. Чи отримуєте ви те, що я мав на увазі під питанням?
Анірудд Джоші
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.