如何在一个控件中创建多个定制器控件

时间:2016-08-02 作者:Yehuda

我正在尝试创建多值定制器控件,如:

排版-颜色、字体系列、大小等我可以创建一个控件并初始化构造函数中的每个控件类,但如何将其正确分组到一个容器并标记它,例如:Typography.

类似这样的内容(不谈论任何CSS):

enter image description here

谢谢

1 个回复
SO网友:Aristeides

有两种方法可以处理自定义控件模板:1。使用PHP模板2。使用JS模板。

您上面发布的屏幕截图来自Kirki 插件。Kirki使用JS模板,所以你可以看到这是如何做到的here.为了简单起见,我建议您查看此控件,因为排版控件过于复杂(获取google字体并根据其他选项修改所选下拉列表):https://github.com/aristath/kirki/blob/2.3.5/includes/controls/class-kirki-controls-multicolor-control.php

您基本上必须分别为所有这些输入字段创建标记。。。或者,就像上面的多色控件一样,使用循环。

然后是WordPress定制器API的JS部分。如果你看看https://github.com/aristath/kirki/blob/2.3.5/assets/js/controls/multicolor.js 负责多色控件的文件,您会注意到,在第8行,它获取控件的选项(这是我选择放置所需参数的地方),然后在第47-59行,它对这些选项运行循环并相应地进行处理。

当然,这段代码比需要的要复杂一些,但这只是因为它处理的是颜色选择器。例如,如果使用文本字段、收音机和/或选择字段,则可以将其简化很多。

要构建这样的控件,应遵循以下基本步骤:

构建自定义控件并使用下划线。js模板。这意味着使用content_template() 方法添加模板to_json() 方法有关Kirki插件的示例,请参见:https://github.com/aristath/kirki/blob/2.3.5/includes/class-kirki-customize-control.php#L124-L150customize_controls_enqueue_scripts 行动to_json() 方法,然后您可以使用该数据执行任何您想要的操作。如果要为控件保存多个值,必须将它们保存为JS对象,获取每个输入字段的值,并将其值保存为对象中的一个项,使用字段的ID或选择用作对象中键的任何内容

相关推荐