WP_CUSTOMIZE SET_TRANSPENT预览期间除外

时间:2014-04-11 作者:GhostToast

所以我用的是$wp_customize 要更改主题中的许多内容,因此我想为生成的CSS设置一个过渡。我正在试图找到一个不会缓存临时结果的流,当用户使用设置并点击“取消”时,就会发生这种情况-这些结果仍在缓存中!

现在,我有一个老套的方法来设置瞬变生命只有1秒,但我觉得一定有更好的钩子或东西可以抓住。下面是我现在的基本流程:

    add_action( \'customize_register\', array( $this, \'customize_register\' ) );
    add_action( \'wp_head\', array( $this, \'display_css_output\' ), 99 );
    add_action( \'customize_preview_init\', array( $this, \'css_cache_reset\' ) );
customize_register 负责所有设置。

function display_css_output( $short_life = 0 ) {
    $html = get_transient( \'my_custom_styles\' );
    if ( empty( $html ) ) {
        $html = $this->generate_css_output();
        set_transient( 
            \'my_custom_styles\', 
            $html, 
            ( $short_life == 0 ? DAY_IN_SECONDS * 2 : 1 )
        );
    }
    echo $html;
}
如果它的集合或其他经历了生成样式的漫长过程,那么它将捕获瞬态。这也是我试图阻止瞬变持续的尝试,$short_life 这将在稍后对该函数的另一次调用中包含。

function css_cache_reset() {
    delete_transient( \'my_custom_styles\' );
    $this->display_css_output( $short_life = 1 );
}
存在delete事件和调用,使瞬态仅持续1秒。

当然有更好的方法吗?

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

这似乎可行,修改display_css_output() 以这种方式:

function display_css_output() {
    $html = get_transient( \'my_custom_styles\' );
    if ( empty( $html ) ) {
        $html = $this->generate_css_output();
        global $wp_customize;
        if ( ! isset( $wp_customize ) ) {
            set_transient( \'my_custom_styles\', $html, DAY_IN_SECONDS );
        }
    }
    echo $html;
}
$short_life 不再需要。基本上检查一下$wp_customize 已设置,则无需设置瞬态。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register