你需要特别做三件事。
由于没有与控件关联的设置,因此需要为settings
, 否则,它将尝试查找与控件ID匹配的设置ID(此处button_id
); 由于从未创建该设置,因此控件永远不会完成初始化。了解更多信息setting-less controls.由于控件将输出input
具有的元素type=button
您需要通过提供按钮标签value
该元素的属性。您可以通过input_attrs
属性类似地,如果要提供自定义class
属于button button-primary
然后您也可以通过将其传递到此处来实现简而言之,这就是您将看到的:
$wp_customize->add_control( \'button_id\', array(
\'type\' => \'button\',
\'settings\' => array(), //
\'priority\' => 10,
\'section\' => \'section_id\',
\'input_attrs\' => array(
\'value\' => __( \'Edit Pages\', \'textdomain\' ), //
\'class\' => \'button button-primary\', //
),
) );
结果:
很自然,这个按钮什么都不会做,因此您需要使用JS将其连接到自定义功能,如下所示:
wp.customize.control( \'button_id\', function( control ) {
control.container.find( \'.button\' ).on( \'click\', function() {
console.info( \'Button was clicked.\' );
} );
} );
从WordPress 4.9-beta1开始,您就可以通过这种方式使用JS添加控件(需要测试!):
var control = new wp.customize.Control( \'button_id\', {
type: \'button\',
settings: [],
section: \'section_id\',
inputAttrs: {
value: \'Edit Pages\',
\'class\': \'button button-primary\'
}
} );
wp.customize.control.add( control );
control.container.find( \'.button\' ).on( \'click\', function() {
console.info( \'Button was clicked\' );
} );
同样,新的JS API需要测试。将在
make.wordpress.org/core.