Snow Monkey で設定しているカスタムプロパティ（CSS変数）

この記事は[Snow Monkey / unitone Advent Calendar 2022](https://adventar.org/calendars/8154)の20日目の記事です。

:::note
WordPress のテーマである Snow Monkey のバージョン18.2.0を使用しています。
:::

https://snow-monkey.2inc.org/

:::note alert
今後のバージョンでカスタムプロパティに大きな変更があるとのことです。
その際、記事の修正を予定していますが、閲覧のタイミングによっては内容がまったくそぐわない可能性があることをご留意ください。
:::

https://twitter.com/inc2734/status/1605083852380049410

## 概要
Snow Monkeyでも昨今の多くのWeb制作と同様にカスタムプロパティ（CSS変数）を使用しています。  
カスタムプロパティを使用し、カスタマイザーを経由せずにサイト内の設定を行う話です。

## カスタムプロパティ
いきなりですが、Snow Monkey内で設定されているカスタムプロパティの一覧です。
```CSS
:root {
    --entry-content-h2-border-left: 1px solid var(--accent-color, #cd162c);
    --entry-content-h2-background-color: #f7f7f7;
    --entry-content-h2-padding: calc(var(--_space, 1.76923rem) * 0.25) calc(var(--_space, 1.76923rem) * 0.25) calc(var(--_space, 1.76923rem) * 0.25) calc(var(--_space, 1.76923rem) * 0.5);
    --entry-content-h3-border-bottom: 1px solid #eee;
    --entry-content-h3-padding: 0 0 calc(var(--_space, 1.76923rem) * 0.25);
    --widget-title-display: flex;
    --widget-title-flex-direction: row;
    --widget-title-align-items: center;
    --widget-title-justify-content: center;
    --widget-title-pseudo-display: block;
    --widget-title-pseudo-content: "";
    --widget-title-pseudo-height: 1px;
    --widget-title-pseudo-background-color: #111;
    --widget-title-pseudo-flex: 1 0 0%;
    --widget-title-pseudo-min-width: 20px;
    --widget-title-before-margin-right: .5em;
    --widget-title-after-margin-left: .5em;

    --_container-max-width: 1280px;
    --_margin-scale: 1;
    --_space: 1.8rem;
    --accent-color: #cd162c;
    --dark-accent-color: #710c18;
    --light-accent-color: #ed5c6d;
    --lighter-accent-color: #f49aa5;
    --lightest-accent-color: #f6aab3;
    --sub-accent-color: #707593;
    --dark-sub-accent-color: #444759;
    --light-sub-accent-color: #aaadbf;
    --lighter-sub-accent-color: #d1d3dd;
    --lightest-sub-accent-color: #dcdde4;
    --_half-leading: 0.4;
    --font-family: system-ui,-apple-system,BlinkMacSystemFont,"ヒラギノ角ゴ W3",sans-serif;
    --_base-font-family: var(--font-family);
    --line-height-sm-small: calc(16 / 14 + var(--_half-leading) * 2);
    --line-height-sm-normal: calc(16 / 16 + var(--_half-leading) * 2);
    --line-height-sm-medium: calc(16 / 20 + var(--_half-leading) * 2);
    --line-height-sm-large: calc(16 / 28 + var(--_half-leading) * 2);
    --line-height-sm-xlarge: calc(16 / 44 + var(--_half-leading) * 2);
    --line-height-sm-xxlarge: calc(16 / 76 + var(--_half-leading) * 2);
    --line-height-sm-xxxlarge: calc(16 / 140 + var(--_half-leading) * 2);
    --_base-font-size-px: 16px;

    --_background-color: #fff;
    --wp-block-width: calc(var(--_container-max-width, 1280px));
    --wp--style--block-gap: calc(var(--_space, 1.8rem) * 1 * var(--_margin-scale, 1));
    --wp-block-width: calc(var(--_container-max-width, 1280px) - var(--_container-margin-sm, 0.9rem) * 2);
    --wp-block-width: calc(var(--_container-max-width, 1280px) - var(--_container-margin-sm, 0.9rem) * 2 + constant(safe-area-inset-right) + constant(safe-area-inset-left));
    --wp-block-width: calc(var(--_container-max-width, 1280px) - var(--_container-margin-sm, 0.9rem) * 2 + env(safe-area-inset-right) + env(safe-area-inset-left));

    --_background-color: transparent;
}
```

これらのカスタムプロパティを上書きすることで、カスタマイザーを経由せずにサイト内の設定を行います。

## 試してみる
まず、`--accent-color`を設定してみましょう。　 
![スクリーンショット 2022-12-20 11.16.51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211849/c633f34d-75c9-906a-c904-2e14609e8b5d.png)
カスタマイザー→基本デザイン設定を開くと、`--accent-color`はデフォルトで`#CD162C`が設定されています。お猿さんの顔の色ですね。

こちらを上書きします。今回はカスタマイザー内の追加CSSを利用し、`:root`に`--accent-color: #00FF00;`と書いてみます。
```css
:root {
    --accent-color: #00FF00;
}
```
通常、アクセントカラーが表示されるサムネイル上のカテゴリ表示が`#00ff00`になりました。
![スクリーンショット 2022-12-20 11.17.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211849/aa4639d6-43ab-a031-5be2-ea1f039da55f.png)

次は、カスタマイザー→基本デザイン設定の中にある「コンテンツの最大幅」を設定してみましょう。
初期値は`1280px`です。
![スクリーンショット 2022-12-20 11.18.13.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211849/f0e41bca-6458-0e9f-a938-eeed509ed353.png)

こちらは`--_container-max-width`を上書きします。
```css
:root {
	--_container-max-width: 1100px;
}
```
![スクリーンショット 2022-12-20 11.19.03.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211849/fb5ec0fc-45f8-e2e6-47fb-569c5314ad3d.png)
コンテナ幅が1100pxになりました。

これらのカスタムプロパティを読み解いていくことで、様々な設定が可能となります。

## なにがいいのか
例では追加CSSに記載していましたが、これらのカスタムプロパティを My Snow Monkey 内で上書きすることで、カスタマイザー設定よりも素早くサイト全体のデザインにアクセスできるようになります。

https://tokyo.wordcamp.org/2015/session/1%E2%88%925/

このあたりは、以前キタジマさんが作られていたWordPress公式ディレクトリ掲載テーマ「Habakiri」を用いて行っていた、「インストールと同時にサイトの設定を完了させておく」という思想から来ています。

フック対応のカスタマイズ項目も同時に設定しておくのがいいですが、今回の記事ではアクセスしやすいカスタムプロパティを取り上げました。
皆さんの制作の一助となれば幸いです。

## おまけ
My Snow Monkey でよく設定するカスタムです。

### ログイン画面のロゴ変更
```php
// ログイン画面のロゴ変更
add_action('login_head',
    function () {
        echo '<style>.login h1 a {background-image: url('.MY_SNOW_MONKEY_URL.'/images/logo.png);width:100%;height:120px;background-size:contain;}</style>';
    }
);

add_filter( 'login_headerurl',
    function () {
        return esc_url( home_url( '/' ) );
    }
);

add_filter( 'login_headertitle',
    function () {
        return esc_html(get_bloginfo('name'));
    }
);
```
![スクリーンショット 2022-12-20 11.53.25.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211849/1c3b033d-e561-39ac-6d2e-e5131a747c98.png)
width と height は画像に合わせてご変更ください。

### プラグイン名の変更
My Snow Monkey を、納品先のクライアント様名に変更します。
```php
<?php
/**
 * Plugin name: 〇〇様専用プラグイン
 * Description: 〇〇様Webサイト専用のプラグインです。〇〇と✕✕と▲▲の設定をしています。下記「作者」リンクからお問い合わせください。
 * Version: 0.2.1
 *
 * Author: 株式会社〇〇
 * Author URI: https://example.com/
 *
 * @package my-snow-monkey
 * @author inc2734
 * @license GPL-2.0+
 */

```
![スクリーンショット 2022-12-20 11.50.39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211849/21e982dd-a855-4d83-cea3-c50c68c554d8.png)

よい Snow Monkey ライフを！