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 ファイルを作成する) のではなく、それらのルールのみを置き換える方法はありますか?