如何创建一个WordPress定制器按钮来清除缓存?

时间:2017-12-09 作者:chris98.5

我正在构建一个自定义模板,该模板使用它创建的刀片模板文件缓存。在工作时,我在定制器中进行更改,对为什么没有显示更改感到困惑。我花了一段时间才弄明白这是因为刀片文件被缓存了,所以布局更改没有生效。

因此,在将来,我希望能够在Wordpress自定义程序中有一个“清除缓存”按钮,单击该按钮可以删除缓存目录。但我不知道怎么做。

这个主题是建立在“Sage 9”Wordpress模板的基础上的,以备不时之需。

这是我在/app/admin中的自定义控件(可能正确,也可能不正确)。php

$wp_customize->add_control(
    new \\WP_Customize_Control(
        $wp_customize,
        \'clearcache\',
        [
            \'label\'      => __( \'Clear Cache\', \'starcresc\' ),
            \'section\'    => \'layout\',
            \'settings\'   => \'clearCache\',
            \'type\'       => \'button\',
            \'choices\'    => [
                \'0\' => __( \'No (Default)\' ),
                \'Clear Cache\' => __( \'Yes\' ),
            ]
        ])
);
这是我添加到函数中的函数。php文件,该文件应删除存储在siteurl/wp content/uploads/cache中的缓存文件

function sc_clearcache() {
    return
    $upload_dir = wp_upload_dir();
        $files = glob($upload_dir . \'cache/*\'); // get all file names
        foreach($files as $file){ // iterate files
            if(is_file($file))
            unlink($file); // delete file
    }
};
但我不知道如何将两者连接起来,并使按钮实际调用该函数。

编辑:

/* Clear the Cache */
function sc_clearcache() {
    $upload_dir = wp_upload_dir();
    $files = glob($upload_dir . \'cache/*\'); // get all file names
    foreach($files as $file){ // iterate files
        if(is_file($file)) {
            unlink($file); // delete file
        }
    }
}
do_action( \'customize_save_after\', \'sc_clearcache\' );

1 个回复
SO网友:Weston Ruter

应该根据您所做的一些更改来清除缓存,而不是手动清除缓存。在以下情况下,不能通过将其关闭来禁用自定义程序预览中的缓存:is_customize_preview()? 然后可以在customize_save_after 措施:

add_action( \'customize_save_after\', \'sc_clearcache\' );

结束

相关推荐

从Functions.php访问插件数据

我正在尝试将wordpress帖子中的数据插入到新的表数据库表中,而不是WP_postmeta. 我的函数正在运行,它将插入$postid 没问题。我遇到的问题是,我需要从Marty Spellerbergs的“地址地理编码器”插件中插入纬度和经度坐标。在插件页面上,Marty说您可以使用以下内容访问循环中的Cooridate:<?php echo get_geocode_lng( $post->ID ); ?> <?php echo get_geocode_lat( $p