定制器JS接口:为一个小节定义active_allback

时间:2017-11-20 作者:Taras Dashkevych

WordPress允许使用active_callback 参数显示自定义程序中特定页面的节。在PHP中,它如下所示:

$wp_customize->add_section( \'section_id\', array(
  \'title\' => \'Contact Page Options\',
  \'priority\' => 1,
  \'panel\' => \'panel_id\',
  \'active_callback\' => \'is_contact_page\',
) );
然后我们可以创建is_contact_page 执行所有检查的函数。

我想知道什么是正确的使用方法active_callback 使用Customizer JS API创建节时?

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

是的,但是您需要使用不同的方法,并且您可能需要做更多的工作,因为active_callback 在这里,PHP可以直接与数据库连接,以确定当前查询是否针对联系人页面。默认情况下,Customizer控件只能访问previewUrl. 因此,如果您可以依靠URL来确定某个内容是否是联系人页面,那么您需要做的就是:

function isContactPage() {
    return /contact/.test( wp.customize.previewer.previewUrl.get() );
}

var section = new wp.customize.Section( \'section_id\', {
    title: \'Contact Page Options\',
    customizeAction: \'Customizing\',
    priority: 1,
    panel: \'panel_id\',
    active: isContactPage() // Initial state.
} );
wp.customize.section.add( section );

// Update the active state whenever the previewed URL changes.
wp.customize.previewer.previewUrl.bind( function activeCallback() {
    section.active.set( isContactPage() ); // Update state.
} );
设置active 状态将需要在中执行PHP逻辑is_contact_page 然后将此消息从预览窗口发送到控件窗口(这是使用active_callback 幕后)。这是在Customize Posts 插件。然而,有#36582 它建议将主查询导出到JS,并将一条消息作为中的附加值从预览窗口发送到控件窗口wp.customize.state.

结束

相关推荐

如何在REST API中获取附库?

我刚刚在帖子中添加了一个图库,希望通过RESTAPI访问其图像。在RESTAPI中,我可以访问帖子的附件。但这些附件有其他图像,而不是在库中。例如,我刚刚从图库中删除了一幅图像,但它仍在附件中。