我从来没有尝试过使用主题定制器,不知何故,我觉得这件事并不好。但最近我试过了,并坚持了下来。
我延长了课程WP_Customize_Control
做我自己的<select multiple="multiple">
控制,工作正常。
现在我想触发select2 jQuery plugin 这样我就可以确保良好的用户体验使用该字段。
但我失败了:(
<?php
function wpse20170307_customize_preview_js() {
wp_enqueue_style( \'select2\', get_template_directory_uri() .\'/libs/select2/select2.min.css\', array(), \'4.0.3\', \'all\' );
wp_register_script( \'select2\', get_template_directory_uri() .\'/libs/select2/select2.min.js\', array( \'customize-preview\' ), \'4.0.3\', true );
wp_enqueue_script( \'my_customizer\', get_template_directory_uri() . \'/assets/js/customizer.js\', array( \'customize-preview\', \'select2\' ), \'1.0.0\', true );
}
add_action( \'customize_preview_init\', \'wpse20170307_customize_preview_js\' );
此操作挂钩也没有将必要的插件脚本或样式排队。因此,将代码放在如下位置:
$(\'.customize-control-multiple-select select\').addClass(\'some\');
根本不起作用。
我尝试使用wp_enqueue_scripts
并使用将上述代码放入customizer.js
, 但我又失败了。
通过调用customizer,使用“查看页面源”,我在任何地方都找不到这样的select2东西,但select2已正确排队wp_enqueue_scripts
在主站点中。
我有没有办法或如何做到这一点?
更新日期:2017年3月12日在韦斯顿·鲁特的帮助下,我成功地找到了一个解决方案。以下是我目前得到的信息:
public $type = \'multiple_select\';
并将JS文件排入队列,如下所示:
wp_enqueue_script( \'project-customizer-inject\', get_template_directory_uri() . \'/assets/js/project-customizer-inject.js\', array( \'customize-controls\', \'select2\' ), \'1.0.0\', true );
在此文件中:
// Set up select2 control in this.container...
console.log(control);
control.id = id;
console.log(id); // id is not defined
//control.select2(); // function select2 not found
//id.select2(); // not working, as id is not set
console.log(control);
已返回:
问题是,我并不擅长JavaScripts。所以,我无法通过我携带的物体
controls
. 和
select2
在其中找不到插件
ready: function() {}
.