我正在开发WordPress插件,我有一个复选框选项来添加缓存控制头。如果选项设置为1,我想写入htaccess文件,否则删除新内容。
我一直在尝试使用insert_with_markers()
但无济于事。以下是我一直在使用的函数:
function write_cache_control(){
$htaccess = get_home_path().".htaccess";
$lines = array();
$lines[] = \'<FilesMatch "\\.(js|css|jpg|jpeg|gif|png|pdf|swf|svg|svgz|ico|ttf|ttc|otf|eot|woff|woff2|webp)$">\';
$lines[] = \'<IfModule mod_headers.c>\';
$lines[] = \'ExpiresActive On\';
$lines[] = \'ExpiresDefault "access plus 1 month"\';
$lines[] = \'Header set Cache-Control "public, immutable, max-age=2628000, s-maxage=2628000"\';
$lines[] = \'Header set Access-Control-Allow-Origin "*\';
$lines[] = \'</IfModule>\';
$lines[] = \'</FilesMatch>\';
insert_with_markers($htaccess, "Cache Control", $lines);
}
nbsp;
function clear_cache_control(){
$htaccess = get_home_path().".htaccess";
insert_with_markers($htaccess, "Cache Control", \'\');
}
我试着把他们
wp
,
init
&;
wp_init
但似乎什么都不管用。我有什么遗漏吗?我应该使用WordPress吗
wp_rewrite
或PHP的
fread
&;
fwrite
还是类似的?
最合适的回答,由SO网友:tmdesigned 整理而成
几乎所有代码都是正确的。我甚至不知道insert\\u with\\u markers函数,现在我知道了,谢谢。
作为回报,我相信我有你的解决方案。
get_home_path()
当任何挂钩(init
,wp
, 等)触发。该函数是在管理端“file.php”中定义的,它是事物管理仪表板端的一部分,尚未加载。
钩子admin_init
, 然而,假设你正在做这些,应该会为你服务得很好。htaccess在管理端更改。如果没有,您可以包括wp admin/includes/file。php,或者使用其他查找方法。htaccess,例如常量ABSPATH(尽管它们不是等价的)。
在您提供的第一个函数上使用admin\\u init钩子,我找到了写入到的规则。下次我在管理端加载页面时,htaccess文件。
顺便说一下,您可能需要检查current_user_can( \'edit_files\' )
在允许该代码运行之前。