定制器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()在控制台中运行两次以使该部分出现,这与控件相同。

Answers:


2

1)可能绑定到api.ready状态,这可能会导致不得不两次调用您的部分

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

  }
})(jQuery);

我在笔迹中看到一条注释,上面写着“注意,自WordPress 4.2起,用于动态添加控件的API和用于JS模板的自定义节和面板的API尚不可用。请参阅#30741。” 读到该笔迹的结尾处“可能现在不适合4.5”,因此您的努力可能是徒劳的=(

2)作为参考,可以在此处找到wp_customize JS API 。该链接也可能有用。

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

嗨,您可以使用我为JS文件提供的其他链接轻松地进行管理。我这样做是为了解决我的目的。
Mohit Aneja 2015年

嗯,JS API中对控件,部分和面板的支持随v4.0一起发布,该版本于12月14日发布,您所指的文章于9月14日撰写。您是否明白我的意思了?
Aniruddh Joshi
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.