可以扩展WP Customize JS方法吗?

时间:2014-08-09 作者:Brian

我想知道是否有可能扩展匿名的方法api 中的对象wp-admin/js/customize-control.js. 我需要用自己的自定义逻辑覆盖其中一个方法,但我怀疑这是不可能的,因为它包装在一个立即调用的函数表达式中:

/* globals _wpCustomizeHeader, _wpMediaViewsL10n */
(function( exports, $ ){
// code
})( wp, jQuery );
据我所知,我无法从window对象扩展原型,因为它是匿名执行的,并且无法从window.wp.customize. 你知道这样的事情是否可能吗?甚至在中提到了覆盖这一点。toggle()方法文档/说明:https://github.com/WordPress/WordPress/blob/master/wp-admin/js/customize-controls.js#L110, 但我不确定他们的意思是简单地将整个JS文件分叉,将WP版本出列,然后将您自己的版本加入队列,还是他们的意思不同。

请注意,似乎可以使用wp.customize.{method}.extend({ foo: // replace method foo here }) 但这只适用于公共基类/对象,而不适用于wp-admin/js/customize-control.js

1 个回复
最合适的回答,由SO网友:bueltge 整理而成

我将加强对你问题的评论。但又是暗示;我不是JS专家。下面的源代码提示仅用于与定制器进行不同的检查,例如sandbox.

wp。自定义(customize)

了解WP主题定制器界面主要围绕了解WP展开。自定义javascript对象。这个wp.customize 对象很重要,您应该在开始时设置它。

下面的小示例演示了这一点。首先,我设置varapi 到自定义程序的对象。在此之后,我将自定义字段设置为api 并使用小型jQuery源代码对此进行增强,以刷新实时预览的结果。

( function( $ ) {
    var api = wp.customize;

    // Site title and description.
    api( \'blogname\', function( value ) {
        value.bind( function( to ) {
            $( \'#header h1 a, #footer a.site-name\' ).html( to );
        } );
    } );

    api( \'blogdescription\', function( value ) {
        value.bind( function( to ) {
            $( \'#header p.site-description\' ).html( to );
        } );
    } );

} )( jQuery );
设置和控件存储在wp.customize.control 和设置对象存储在wp.customize.value类有很多函数,可以帮助您。

实例(id)–从集合中获取具有指定id的对象。如果集合包含具有指定id的对象,则返回true,否则返回false

  • 添加(id,值)–使用指定的id和值向集合添加对象

    自定义设置

    使用此功能,我们可以增强自定义设置。

    var api = wp.customize,
        mysetting = api.instance( \'my_custom_setting\' );
    
    也可用于阵列

    var api = wp.customize,
        mysetting = api.instance( \'my_custom_settings[my_custom_setting_field]\' );
    
    获取控制台中的结果。

    console.log( api.instance( \'my_custom_settings[my_custom_setting_field]\' ).get() );
    
    设置也可以通过函数更改设置值set.

    api.instance( \'my_custom_settings[my_custom_setting_field]\' ).set( \'my new value\' ) );
    
    使用控件获取对象
  • console.log( api.control.instance( \'my_custom_setting_field\' ) );
    
    有用的源代码wp admin/js/customize controls。js包括/js/自定义预览。wp包括/js/customize base。js

    结束

    相关推荐

    主题设置页面:设置Api与更新选项

    我是一个新的WordPress开发人员,试图开始运营商销售Premium Themes.上周,我在试图理解如何创建主题选项页面时遇到了很多困难。最后,我终于明白了我应该如何使用设置api来完成它。然后,我尝试自定义设置页面样式,添加一些jQuery功能,并使页面更加用户友好。我发现没有挂钩可以做到这一点,唯一的方法是重写一些函数(如do\\u settings\\u sections()),或者进行一些黑客攻击。在花了很长时间寻找一本教程来帮助我以正确的方式完成我正在寻找的任务之后,我尝试分析网络上最畅销