用英语
你好,我正在开发一个小部件,它根据所选选项更改(字段的内容)。
如果您更改了设置,我需要强制更新小部件。
自定义程序启用了自动更新,但在这种情况下(在更改小部件的内容时)它不起作用,而只是显示了“应用”按钮。
结果,小部件在2次更新后就会更新。
问题是如何更新小部件自定义程序(重新启动其小部件内容)?
НаРусскомЗдравствуйте,яразрабатываювиджеткоторыйизменяетсвоесодержимое(поля)взависимостиотвыбранныхпараметров。Присменепараметрамненужнопринудительнообновлятьвиджет。Вкастомайзеревключеноавтообновление,ноононесрабатываетвданномслучае(когдаменяетсяконтентвиджета),авростопоявляетсякнопка“применить”。Получаетсявиджетобновляетсяпосле2хобновлений。Вопрос,какобновитьвиджетвкастомайзере(перезагрузитьегосодержимое)?
发布于 2017-01-18 08:16:37
内核中的小部件目前并不能使这件事变得容易。请阅读Live预览: WordPress 3.9中定制程序中的小部件管理,特别是“禁止更新按钮(通常)”一节:
管理页面上的小部件表单有一个熟悉的Save按钮。在Widget Customizer的早期版本中,我们将Save按钮调整为Update按钮,因为它实际上不会保存小部件,而只是用小部件的最新状态更新预览。但是,必须单击此update按钮才能看到预览更新,这是一种糟糕的用户体验,没有必要。因此,每当控件中的某个字段被更新时,我们就实现了提交表单来更新预览窗口小部件的状态的方法: update按钮被隐藏,并且在同步到预览时出现旋转器。当您与小部件表单交互时,执行此实时提交的逻辑取决于小部件表单中的字段是否是在清除小部件表单时返回的相同字段。这样,字段就可以对齐,以便使用其净化后的值进行更新。我们无法在小部件管理页面上选择小部件表单的路径,因为这会干扰用户快速地输入这些字段,而这些小部件表单实际上被新清理过的表单完全替换了。因此,如果一个小部件表单动态地添加或更改了包含哪些输入字段,则将停止实时输入它们的更新,并且更新按钮将重新出现。当您单击此按钮时,表单将替换为清洁版本,就像在小部件管理页面上一样。我们还引入了新的jQuery事件来帮助处理这些表单更改(…)。
因此,您需要小心地确保PHP生成与在JS中动态生成的字段相同,以确保当update-widget Ajax请求返回到WP_Widget::form()输出的内容时,输入对齐。
在定制程序中实现小部件的方式并不理想,但是这样做是为了最大限度地实现向后兼容性。要想对小部件进行新的介绍,使其成为JavaScript驱动的而不是PHP驱动的,请参见#33507,也可以看到JS小部件特性插件,它完全避免了您所面临的问题,因为JS用于管理小部件的表单UI。
https://wordpress.stackexchange.com/questions/252673
复制相似问题