我正在尝试动态写入 css 文件。该文件中已经有一些内容,我希望动态生成的 css 规则附加到文件的末尾。
但是,我的代码总是覆盖删除所有以前数据的文件,但是当我使用FILE_APPEND
标志时。问题是,当我再次写入文件时,它会在底部再次附加数据,复制现有规则。
这是我经过大量试验和错误后得到的最终代码:
function mytheme_save_page_css( $post_id ) {
$margin = get_post_meta( $post_id, '_page_margin', true );
$padding = get_post_meta( $post_id, '_page_padding', true );
$bgcol = get_post_meta( $post_id, '_page_bg_col', true );
$newmargin = sanitize_text_field( $_POST['pagemargin'];
$newpadding = sanitize_text_field( $_POST['pagepadding'];
$newbgcol = sanitize_text_field( $_POST['pagebg'];
if ( $margin != $newmargin || $padding != $newpadding || $bgcol != $newbgcol ) {
$file = get_stylesheet_directory() . '/lib/css/sections/style.css';
$css = 'header{margin:'.$newmargin.';padding:'.$newpadding.';background-color:'.$newbgcol.';}';
file_put_contents($file, $css, FILE_APPEND | LOCK_EX);
}
update_post_meta( $post_id, '_page_margin', $newmargin );
update_post_meta( $post_id, '_page_padding', $newpadding );
update_post_meta( $post_id, '_page_bg_col', $newbgcol );
}
有没有办法只替换那些规则,而不是一次又一次地复制它们(并创建一个单独的 CSS 文件)?