カスタマイザJS API


10

わかりましたので、カスタマイザーのJS APIを使用して動的に新しいパネルセクションとコントロールを作成するように教育しています。

それは数日イライラしていて、JS APIを介してこれを達成する正確な方法を得ることができませんでした。

これまでのところ、これは私がそれを実現するために行っていることですが、成功していません:

    // 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回実行する必要があるため、それらはどれも機能していないようです。コントロールも同じです。

回答:


2

1)おそらくapi.ready状態にバインドして、セクションを2回呼び出す必要を修正することができます

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

  }
})(jQuery);

Tracで「動的に追加されたコントロールのAPI、およびJSテンプレートのカスタムセクションとパネルのAPIは、WordPress 4.2の時点ではまだ使用できないことに注意してください。#30741を参照してください。」そのトラックを読むことは「今のところ4.5ではない可能性が高い」で終わるので、あなたの努力は無駄かもしれません=(

2)参考までに、wp_customize JS APIはここにあります。このリンクも役に立ちます。

3)3番目のリンクの担当者が十分ではありませんが、カスタマイザフィールドのヘルパーフレームワークであるKirki.orgを見ることができます。Kirkiは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/


こんにちはMohit、答えてくれてありがとう。しかし、あなたが提供したものは実際の質問には答えません これらのフレームワークを使用する場合でも、JS APIを使用する必要があります。これらのfraworksはカスタマイザのJS APIを拡張しないため、この場合は役に立ちません。
Aniruddh Joshi 2015

こんにちは。JSファイル用に提供した他のリンクを使用して、簡単に管理できます。私はこのようにして、私の目的を解決しています。
Mohit Aneja

JS APIのコントロール、セクション、およびパネルのサポートは、12月14日にリリースされたv4.0に付属しており、あなたが参照している記事は9月14日に書かれました。
Aniruddh Joshi
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.