如何让定制器立即局部强制完全刷新?

时间:2017-07-11 作者:dodov

我有一个基本上需要整个页面刷新的设置。但是,我仍然希望有一个指向其控制器的快捷图标。但是,如果我这样做,我需要实现render_callback 通过selector. 我不想那样。我想刷新整个页面。

以下是我目前拥有的(例如blogname 为简单起见):

$wp_customize->get_setting( \'blogname\' )->transport = \'postMessage\';
$wp_customize->selective_refresh->add_partial( \'blogname\', array(
    \'selector\' => \'.logo a\',
    \'render_callback\' => function () {
        $wp_customize->requestFullRefresh();
    }
) );
这是可行的,但并不完美。当blogname 设置发生时,首先<a> 元素闪烁(尝试渲染),然后整个页面刷新。

问题:如何直接跳到整页刷新而不等待部分刷新

1 个回复
SO网友:Weston Ruter

如果您总是想刷新页面,那么只需删除这一行:

$wp_customize->get_setting( \'blogname\' )->transport = \'postMessage\';
或显式设置为refresh:

$wp_customize->get_setting( \'blogname\' )->transport = \'refresh\';
通过这样做,将永远不会调用选择性刷新来刷新部分,它将直接跳到完全刷新。

注:最好返回falserender_callback 指示要触发刷新。在您的示例中,它实际上导致了一个致命错误,因为没有这样的方法。返回时仍会发生执行完全刷新的相同回退行为false 或导致致命错误,但在后一种情况下,您的错误日志将被填满。

简而言之,您的示例可以修改为:

$wp_customize->selective_refresh->add_partial( \'blogname\', array(
    \'selector\' => \'.logo a\',
    \'render_callback\' => \'__return_false\',
) );

结束

相关推荐