「メイド・イン・ヘブン」スキン適用中

Cocoonフォーラム

サイト内検索
書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示高速化を無効にしてください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

不具合の発生手順:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法
  7. ブラウザ環境チェックツール
  8. Cocoonカスタマイズ依頼

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

CSSを縮小化すると、カレンダーウィジ...
 
共有:
通知
すべてクリア

CSSを縮小化すると、カレンダーウィジェットの枠線が消える

32 投稿
4 ユーザー
24 Likes
1,147 表示
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

平素よりお世話になっております。

「Cocoon設定」-「高速化」-「CSSを縮小化する」にチェックを入れると、カレンダーウィジェットの枠線が消えてしまうようです。
(「高速化」の他の項目は、チェックなし)

 

「border-width」がなくなるみたい?

ちなみに「Cocoon 2.6.4.8」だと、この事象は発生しないようです。
(間接的には別トピックのテーブルの件の修正の影響かもしれないですが、そもそも縮小化に何か問題があるということでしょうか?)

 

①サイトキーカラー:未設定

・CSS縮小化なし

 
・CSS縮小化あり
 
 
①サイトキーカラー:設定あり
 
・CSS縮小化なし
 
・CSS縮小化あり
 

 


以下、環境情報です。
(ローカル環境ですけれど)

----------------------------------------------
コンテンツURL:/wp-content
インクルードURL:/wp-includes/
テンプレートURL:/wp-content/themes/cocoon-master
スタイルシートURL:/wp-content/themes/cocoon-master
親テーマスタイル:/wp-content/themes/cocoon-master/style.css
WordPressバージョン:6.3.1
PHPバージョン:8.1.9
ブラウザ:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
サーバーソフト:nginx/1.16.0
サーバープロトコル:HTTP/1.0
エンコーディング:gzip, deflate, br
言語:ja,en-US;q=0.9,en;q=0.8
----------------------------------------------
テーマ名:Cocoon
バージョン:2.6.4.13
カテゴリー数:19
タグ数:6
ユーザー数:4
----------------------------------------------
Gutenberg:1
AMP:0
PWA:0
Font Awesome:4
Auto Post Thumbnail:1
Retina:0
ホームイメージ:/wp-content/themes/cocoon-master/screenshot.jpg
----------------------------------------------
ブラウザキャッシュ有効化:0
HTML縮小化:0
CSS縮小化:1
JavaScript縮小化:0
Lazy Load:0
----------------------------------------------
利用中のプラグイン:
Category Order and Taxonomy Terms Order 1.7.9
WP Multibyte Patch 2.9
----------------------------------------------


   
わいひら reacted
引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

「サイトキーカラー:未設定」「サイトキーカラー:設定あり」の両方とも、①で書いてしまいました💦


   
わいひら reacted
返信引用
(@akira)
Famed Member Registered
結合: 6年前
投稿: 1657
 

mk2さんのおっしゃるとおり、別トピックの私のコメントが原因です。

https://wp-cocoon.com/community/postid/73577/

この変更の影響が出ました。

キーカラーとテーブルのボーダー色に関する不具合修正

CSS を縮小しない場合は、このような CSS です。

table:not(.has-border-color) :where(th, td) {
  border: 1px solid var(--cocoon-x-thin-color);
  padding: 6px;
}

それが CSS を縮小すると :where() の前のスペースが削除されてしまいます。

table:not(.has-border-color):where(th,td) {
  border: 1px solid var(--cocoon-x-thin-color);
  padding: 6px
}

ただ、WordPress が読み込む CSS でも :where() の前のスペースが消えています。

CSS 縮小していない場合は、このような CSS が…

.wp-block-post-comments-form[class*=-font-size] :where(.comment-reply-title),
.wp-block-post-comments-form[style*=font-size] :where(.comment-reply-title) {
  font-size: inherit
}

CSS 縮小後は、こうなっています。

.wp-block-post-comments-form[class*=-font-size]:where(.comment-reply-title),
.wp-block-post-comments-form[style*=font-size]:where(.comment-reply-title) {
  font-size: inherit
}

けれど、CSS を縮小しても WordPress が読み込む CSS は :where() の前のスペースを保持しているものもあります。

html :where(.has-border-color) {
  border-style: solid
}

html :where([style*=border-top-color]) {
  border-top-style: solid
}

html :where([style*=border-right-color]) {
  border-right-style: solid
}

Cocoon の CSS の縮小処理自体に問題があると思いますが、違いが生じるのはなぜだろう。

This post was modified 8か月前 by Akira

   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

ご連絡ありがとうございます。
そうなると直前を半角スペースにすることができる疑似クラスはすべて対象になるかもしれませんね。
https://developer.mozilla.org/ja/docs/Web/CSS/Pseudo-classes
とはいえ下手にphp-html-css-js-minifierの正規表現をいじるのも自分の実力的に怖い(下手に変更すると思いがけない不具合が出そうで)。
根本的な解決方法ではないのですが、対症療法的に出力結果を「:where(」→「 :where(」に置換することぐらいしか思いつかないです。
でもそうするくらいなら、今の環境的にそこまで高速化に有用性もないので機能廃止にした方が良いのかもしれませんね。

This post was modified 8か月前 by わいひら

   
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

https://github.com/xserver-inc/cocoon/blob/3a502fa5fc00e5c815a285804c4da5b7ff51aed7/style.css#L1526-L1529

なにも纏めなければいいのでは?

table:not(.has-border-color) th,
table:not(.has-border-color) td {
    border: 1px solid var(--cocoon-x-thin-color);
    padding: 6px;★
}

★があるので、投稿のある日付の周りに隙間ができてしまう。


   
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

長くなりますので、これから複数の返信に分けて書きます。
(カレンダーウィジェットから、話は逸れてしまうのですけれど、CSS縮小化の話だと思います)

最初に、今回使用するソースは以下です。
https://notepad.pw/share/DbwetBGchNZxUAj87b5d

  • アイコンリストが2つ
  • その下に段落ブロックが3つ
  • 上記をグループ化して、スタイルに「白抜き」を指定

上記のような状態です。

イメージとしては、以下のような感じです。


   
わいひら reacted
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

上記のものを、以下の環境でCSSの縮小ありなしで比較します。

----------------------------------------------
コンテンツURL:/wp-content
インクルードURL:/wp-includes/
テンプレートURL:/wp-content/themes/cocoon-master
スタイルシートURL:/wp-content/themes/cocoon-master
親テーマスタイル:/wp-content/themes/cocoon-master/style.css
WordPressバージョン:6.3.1
PHPバージョン:8.1.9
ブラウザ:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
サーバーソフト:nginx/1.16.0
サーバープロトコル:HTTP/1.0
エンコーディング:gzip, deflate, br
言語:ja,en-US;q=0.9,en;q=0.8
----------------------------------------------
テーマ名:Cocoon
バージョン:2.6.4.13
カテゴリー数:19
タグ数:6
ユーザー数:4
----------------------------------------------
Gutenberg:1
AMP:0
PWA:0
Font Awesome:4
Auto Post Thumbnail:1
Retina:0
ホームイメージ:/wp-content/themes/cocoon-master/screenshot.jpg
----------------------------------------------
ブラウザキャッシュ有効化:0
HTML縮小化:0
CSS縮小化:1
JavaScript縮小化:0
Lazy Load:0
----------------------------------------------
利用中のプラグイン:
Category Order and Taxonomy Terms Order 1.7.9
WP Multibyte Patch 2.9
----------------------------------------------

 


表示は、CSSの縮小化ありなしでは、変化しません。

 
ただ、順番が変わるとは思っていました。
(たまたま表示上は上手くいっている?)
 
最後の「段落3」の下のmarginに注目したのですけれど。
 
・CSS縮小化なし
 
・CSS縮小化あり

   
わいひら reacted
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

Cocoonのバージョンは同じで、WordPress 6.2.2の環境で、同じものを比較します。

環境情報です。

----------------------------------------------
コンテンツURL:/wp-content
インクルードURL:/wp-includes/
テンプレートURL:/wp-content/themes/cocoon-master
スタイルシートURL:/wp-content/themes/cocoon-master
親テーマスタイル:/wp-content/themes/cocoon-master/style.css
WordPressバージョン:6.2.2
PHPバージョン:8.1.9
ブラウザ:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Safari/537.36
サーバーソフト:nginx/1.16.0
サーバープロトコル:HTTP/1.0
エンコーディング:gzip, deflate, br
言語:ja,en-US;q=0.9,en;q=0.8
----------------------------------------------
テーマ名:Cocoon
バージョン:2.6.4.13
カテゴリー数:0
タグ数:0
ユーザー数:4
----------------------------------------------
Gutenberg:1
AMP:0
PWA:0
Font Awesome:4
Auto Post Thumbnail:1
Retina:0
ホームイメージ:/wp-content/themes/cocoon-master/screenshot.jpg
----------------------------------------------
ブラウザキャッシュ有効化:0
HTML縮小化:0
CSS縮小化:1
JavaScript縮小化:0
Lazy Load:0
----------------------------------------------
利用中のプラグイン:
Category Order and Taxonomy Terms Order 1.7.7
WP Multibyte Patch 2.9
----------------------------------------------

 


WordPress 6.2.2では、なぜか、CSS縮小化ありなしで、表示が変わります。

・CSS縮小化なし

 
・CSS縮小化あり(段落3の下に余白ができる)

   
わいひら reacted
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

WordPressのバージョン違いで、なぜこういうことが起こるのか分かりません。
ただ、CSS縮小化の影響は、知らず知らずのうちに、いろいろあるのかもしれないです。
(疑似クラス、たくさんあるでしょうし)


   
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2263
 

WordPressのVer違いなのか?と言うより、独自のCSS圧縮が、対応していないCSS記述ルール?とも思え。


●対象

バージョン:2.6.4.13
親テーマstyle.css


●手順

圧縮前後のファイルを、同じルールでCSS整形。
整形したファイルを、WinMergeを用い比較し、目視確認。


●結果

前後で以下の差異があった。

  • クラスの最後のプロパティの「;」削除
  • 「”」削除
  • カラーコードを短縮化
  • CSSクラス間でない余分なスペース、コメントを削除

以下の部分のみ、疑似要素「:」の前にCSSクラスが無い場合、問題となる
先に書かれたように「xxx :where」→「xxx:where」となる。


●該当箇所

https://github.com/xserver-inc/cocoon/blob/3a502fa5fc00e5c815a285804c4da5b7ff51aed7/style.css#L1526


●類似確認項目

その他の範囲で、以下があります。

  • 生成されるカスタムCSS
  • fontawesome5.css

   
わいひら reacted
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

WordPressのバージョン違いの件も、良く分かりませんが、とりあえずおいておきます。

WordPress 6.3.1の以下の部分ですが。

https://github.com/xserver-inc/cocoon/blob/3a502fa5fc00e5c815a285804c4da5b7ff51aed7/style.css#L2863-L2864

 

CSSを縮小化(HTMLも縮小化)すると、以下のように見えます。

 
2863行目(赤矢印)の「 :last-child」は、前スペースが削除される。
2864行目(青矢印)の「 :last-child」は、前スペースが残ったまま。
 
こういうことが、Cocoonだけでなく、WordPress本体のCSSも含めて、起きていると思われるのですけれど。
 
 
【追記】
 
CSS縮小化した状態でデベロッパーツールで確認すると、縮小化前には適用されていたCSSがいなくなってしまい。
それがどういうことか分からなかったのですが、先にAkiraさんのお書きになったことで、何となくそういうことかと思っている状態です。
 
投稿者:: @akira

ただ、WordPress が読み込む CSS でも :where() の前のスペースが消えています。

CSS 縮小していない場合は、このような CSS が…

.wp-block-post-comments-form[class*=-font-size] :where(.comment-reply-title),
.wp-block-post-comments-form[style*=font-size] :where(.comment-reply-title) {
  font-size: inherit
}

CSS 縮小後は、こうなっています。

.wp-block-post-comments-form[class*=-font-size]:where(.comment-reply-title),
.wp-block-post-comments-form[style*=font-size]:where(.comment-reply-title) {
  font-size: inherit
}

けれど、CSS を縮小しても WordPress が読み込む CSS は :where() の前のスペースを保持しているものもあります。

html :where(.has-border-color) {
  border-style: solid
}

html :where([style*=border-top-color]) {
  border-top-style: solid
}

html :where([style*=border-right-color]) {
  border-right-style: solid
}

Cocoon の CSS の縮小処理自体に問題があると思いますが、違いが生じるのはなぜだろう。

 

 

   
わいひら reacted
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

そんなもので、カレンダーウィジェット(クラシックエディタのテーブル含む)だけの話ではなく。

わいひらさんがおっしゃっている以下のようなことだと思っています。

投稿者:: @yhira

そうなると直前を半角スペースにすることができる疑似クラスはすべて対象になるかもしれませんね。

かと言って、良い解決策を思いつかず・・・。

正規表現の嵐で、どうしたものかと。

事象的に、前スペースが一律無くなる訳でないのが、難しいです。


   
わいひら reacted
返信引用
(@akira)
Famed Member Registered
結合: 6年前
投稿: 1657
 

縮小処理に使うライブラリの変更でもいいかもしれません。PHP で CSS と JS を縮小するものとして、2 つがすぐに検索で出てきました。

前者の matthiasmullie/minify は使ったことがあり、Cocoon で試してみました。結果は上手くいっています。:where() などの前のスペースは保持されます。ちょっと複雑な calc() も試しましたが問題ありません。

JS の縮小も一部分だけ試しましたが、こちらも上手くいっています。もし、ライブラリを変更される場合は、JS の縮小も一緒に変更するのがいいように思えます。

ただ、CSS や JS を縮小する PHP ライブラリは、ファイル操作系の関数を使っています。そのため、Theme Check で検証すると警告が出ます。matthiasmullie/minify の場合も fwrite と fopen、fclose を使っていると警告が出ました。また、base64_encode と exec が使われているとも指摘されます。この Theme Check の検証結果をどう捉えるかで、今後やることが違ってくるかなと思いました。


WordPress のバージョンは関係ありません。 また、テーブルの CSS を変更すればいいわけでもありません。

This post was modified 8か月前 by Akira

   
わいひら reacted
返信引用
(@akira)
Famed Member Registered
結合: 6年前
投稿: 1657
 

追記

matthiasmullie/minify で縮小した場合、Font Awesome 4 が表示されなくなりました。豆腐になります。

ただ、font-awesome.min.css を少し変更すれば解決しました。


   
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

すみません、混乱をさせてしまっているのかもしれないです。

私は、WordPressのバージョン違いによって、この事象が発生しないと言っている訳ではありません。

今回でいえば、WordPress 6.2.2でも、WordPress 6.3.1でも、疑似クラスの前スペースの削除は起こっています。

但し、全部が全部削除される訳ではないということです。

そのためかどうか分かりませんが、WordPressのバージョン違いで、結果(見た目)が違うことがあるという事象が発生しているようです。

それを書きたかったのです。

ソースはご提示しましたので、試していただければお分かりいただけるのかなと思っています。

(それとも私の環境だけでしょうか?別の事象かも?しかし縮小化しないと起きません)

 

それはそれとして、解決策がありそうなのは朗報ですね。


   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

皆さん色々なご提案ありがとうございます。
近くバージョンアップをしようと思っているので、それが終わったら他のライブラリを試してみようと思います。

ただ今後いろいろCSSも変わるかもしれないので、高速化するメリットより高速化するデメリットの方が上回りそうな気もします。


   
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

とりあえずCSSの縮小化はmatthiasmullie/minifyに変更しGitHubにアップしておきました。
https://github.com/xserver-inc/cocoon
とりあえずこれで「 :where()」などの問題の不具合は解消されました。
もう少し様子を見てみます。
※JavaScriptの縮小に関してはこの機能は含まれたバージョンを公開してから時間を空けて別バージョンで実装したいと思います。

投稿者:: @akira

matthiasmullie/minify で縮小した場合、Font Awesome 4 が表示されなくなりました。豆腐になります。

僕の環境ではFont Awesome 4は問題なく豆腐にはなっていないようでした。
matthiasmullie/minifyの最新の更新は7月2日なので、改善されたというわけではなさそうなのでもしかしたら何か他にトリガーあるのかも。

 


   
Akira and mk2 reacted
返信引用
mk2
(@mk2_mk2)
Illustrious Member Moderator
結合: 3年前
投稿: 6931
Topic starter  

ご対応いただき、ありがとうございます。

CSS縮小化をしても、カレンダーウィジェットの枠線が表示されるようになりました。

 

また、以下の返信で書いた、WordPress 6.3.1では発生しないものの、何故かWordPress 6.2.2では、CSS縮小化ありなしで、変わってしまう現象も解消されました。

https://wp-cocoon.com/community/postid/73623/
https://wp-cocoon.com/community/postid/73624/
https://wp-cocoon.com/community/postid/73625/

適用されるCSSが、CSS縮小化ありなしで、変化しなくなりました。

CSS縮小化をしても、以下のように、疑似クラスの前にスペースは残るようになりました。
(以前は、赤矢印の部分の前スペースがなくなっていました)

 
 
FontAwesome 4に関しては、今のところ私の環境でも問題なく表示されているようです。


   
わいひら reacted
返信引用
(@akira)
Famed Member Registered
結合: 6年前
投稿: 1657
 

私の環境でも Font Awesome 4 は問題なく表示されました。

ただ、CSS がおかしくなる部分があります。これは私が試した時にも起きて、表示されない原因でした。

font-awesome.min.css の最初にある @font-face の以下の 2 つの相対パスが、パスの途中と最後にシングルクォーテーションが入る絶対パスに変わってしまいます。

/* これが */
'../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0'

/* こうなる */
 https://code.local/wp-content/themes/cocoon-master/webfonts/fontawesome/css /'../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0'



/* これが */
'../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular'

/* こうなる */
 https://code.local/wp-content/themes/cocoon-master/webfonts/fontawesome/css /'../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular'

おそらく、このような相対パスに Path converter が対応していない気がします。

気にはなりますが、アイコンは表示されているので無視しても構わないかもしれません。

This post was modified 7か月前 4回 by Akira

   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

mk2さん、Akiraさん、ご確認いただきありがとうございます!

投稿者:: @akira

ただ、font-awesome.min.css を少し変更すれば解決しました。

ちなみにAkiraさん、上記はどのようにして解決されたのでしょうか。
Font Awesome 4はこれ以上アップデートされることはないと思うので、font-awesome.min.cssファイルもそのように対応しておいても良いのかもしれません。


   
返信引用
(@akira)
Famed Member Registered
結合: 6年前
投稿: 1657
 

font-awesome.min.css の @font-face を整形した場合、こうなっています。

@font-face {
  font-family: 'FontAwesome';
  src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
  src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'),
      url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),
      url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),
      url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),
      url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: swap
}

このうちフォーマットが embedded-opentype と svg の url() 関数のシングルクォーテーションを削除しました。

@font-face {
  font-family: 'FontAwesome';
  src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
  src: url(../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0) format('embedded-opentype'),
      url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'),
      url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'),
      url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'),
      url(../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular) format('svg');
  font-weight: normal;
  font-style: normal;
  font-display: swap
}

※ 全てのフォーマットのシングルクォーテーションを削除してもいいかもしれません。

変更後に CSS を縮小すると、このようなパスになります。パスの途中に余計なクォーテーションは入っていません。

@font-face {
  font-family: 'FontAwesome';
  src: url( https://code.local/wp-content/themes/cocoon-master/webfonts/fontawesome/css/../fonts/fontawesome-webfont.eot?v=4.7.0); 
  src: url( https://code.local/wp-content/themes/cocoon-master/webfonts/fontawesome/css/../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0)  format('embedded-opentype'),
      url( https://code.local/wp-content/themes/cocoon-master/webfonts/fontawesome/css/../fonts/fontawesome-webfont.woff2?v=4.7.0)  format('woff2'),
      url( https://code.local/wp-content/themes/cocoon-master/webfonts/fontawesome/css/../fonts/fontawesome-webfont.woff?v=4.7.0)  format('woff'),
      url( https://code.local/wp-content/themes/cocoon-master/webfonts/fontawesome/css/../fonts/fontawesome-webfont.ttf?v=4.7.0)  format('truetype'),
      url( https://code.local/wp-content/themes/cocoon-master/webfonts/fontawesome/css/../fonts/fontawesome-webfont.svg ?v=4.7.0#fontawesomeregular) format('svg');
  font-weight: 400;
  font-style: normal;
  font-display: swap
}

※ url( の直後やフォーマットが svg のパスの途中にスペースが入っていますが、実際には入りません。このフォーラムに CSS を貼り付けるとスペースが勝手に入ってしまいます。

ただ、根本的に解決する場合は、minify の開発者さんのコメントが役に立つかもしれません。パスのコンバーターを変更できるよと言っています。

https://github.com/matthiasmullie/minify/issues/153#issuecomment-275340478

この例にある MatthiasMullie\PathConverter\NoConverter() は、受け取ったパスをそのまま返すみたいです。

参考:cocoon/plugins/minify/path-converter-master/src/NoConverter.php

試していないですが、パスを変換しなければパスに関する問題はそもそも起きない気がします。

This post was modified 7か月前 6回 by Akira

   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

教えていただきありがとうございます。
僕のChrome環境だと不具合を再現できたので色々確認してみました。

投稿者:: @akira

ただ、根本的に解決する場合は、minify の開発者さんのコメントが役に立つかもしれません。パスのコンバーターを変更できるよと言っています。

https://github.com/matthiasmullie/minify/issues/153#issuecomment-275340478

上記リンクで紹介されているコードを書いてオーバーライドしてみたのですが、今回の不具合の改善はしないようでした。
Akiraさんが書かれたコードを確認すると、URLクエリに#が入っているパスがダメっぽいですね。#iefixとか#fontawesomeregularとか。
実際にライブラリーコードの以下の行をコメントアウトすると不具合が改善されます。
https://github.com/xserver-inc/cocoon/blob/614cd1b5d7260d4fa97ea021cfdfa0132451e1a3/plugins/minify/minify-master/src/CSS.php#L448

この部分を外部から取り扱う方法が分からなかったので、ライブラリを書き換えて #xxxxx 部分を削除することにしてみました。
https://github.com/xserver-inc/cocoon/commit/a1e473cb36e45e0c8a404c0995b1aadca8ae61d8
これで不具合は解消されましたが、もしかしたらもっと良い方法があるのかもしれません。


   
Akira reacted
返信引用
(@akira)
Famed Member Registered
結合: 6年前
投稿: 1657
 

別の不具合を見つけました。

このような CSS を子テーマの style.css に書いた場合…

/* #myPath は <svg> の <clipPath> の id */
.sample-1 {
  clip-path: url(#myPath);
}

/* #c1 は <svg> の <filter> の id */
.sample-2 {
  filter: url(#c1);
}

url() がこのようになり、SVG を参照できなくなります。

.sample-1 {
  clip-path: url( https://code.local/wp-content/themes/cocoon-child-master/#myPath) 
}

.sample-2 {
  filter: url( https://code.local/wp-content/themes/cocoon-child-master/#c1) 
}

そのため、MDN の clip-path - HTML と SVG の比較 でやっているようなことができないです。

パスの変換自体を止めるのがいいかもしれません。ただ、どこを変更すればパスの変換が止まるのか分からないです。

もしくは、わいひらさんが最初におっしゃっていた CSS の縮小機能の廃止、または余分なスペースや改行、セミコロンを削除するだけの非常に簡素な CSS 縮小への変更なども視野に入れるのがいいかもしれません。

なぜ matthiasmullie/minify はパスの変換をやるんだろう?clean-csscssnano も変換するのか試しましたが変換しないです。パスの変換の必要性が分からない。

This post was modified 7か月前 3回 by Akira

   
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

投稿者:: @akira

そのため、MDN の clip-path - HTML と SVG の比較 でやっているようなことができないです。

だとしたら#を削除しちゃうのもダメなんですね。

投稿者:: @akira

パスの変換自体を止めるのがいいかもしれません。ただ、どこを変更すればパスの変換が止まるのか分からないです。

そうなんですよね。
僕も先日以下の$url = $converter->convert($url);をコメントアウトして試してみたんですけど、パスが変換されてしまうんですよね。
https://github.com/xserver-inc/cocoon/blob/614cd1b5d7260d4fa97ea021cfdfa0132451e1a3/plugins/minify/minify-master/src/CSS.php#L445
とりあえずパスを変換しない方法を模索してみて、それが分からなければ廃止もしくは別の手段を考えたいと思います。


   
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

/path-converter-master/src/Converter.php や /minify-master/src/CSS.php の中の色々なコードをコメントアウトして試しているけど、どのコードが原因で赤字部分が付加してしまうのか分からない…。

h ttps://cocoon.jp/wp-content/themes/cocoon-master/webfonts/fontawesome/css/../fonts/fontawesome-webfont.eot?v=4.7.0

どこで先頭にURLが入っちゃってるんだろう。

 clip-path: url( h ttps://code.local/wp-content/themes/cocoon-child-master/#myPath)

 これを外す方法さえわかれば行けそうな気がする。
関係ありそうな部分のコードを全てコメントアウトしても追加されちゃう。
とりあえず今日はこれまでにして、明日また色々試してみます。

This post was modified 7か月前 by わいひら

   
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

url()内のCSSのパスの前にURLが付け加えられてしまうのはライブラリーが原因ではなく僕の書いたこの部分が原因でした。
https://github.com/xserver-inc/cocoon/blob/e822b418cfb13aeff8ee2a84c56940d899ce7f97/lib/page-speed-up/minify-css.php#L176-L200
ライブラリーに何かあると思い込んでそこばかり見てました。
HTML内に全てのCSSを出力すると相対パスだとずれてしまうので絶対パスに変更していたようです。
とりあえず今日、原因と思しき部分は分かったので対応は明日にでもしようかと思います。


   
Akira and mk2 reacted
返信引用
(@akira)
Famed Member Registered
結合: 6年前
投稿: 1657
 

minify 実装前のバージョンに戻して気付きました。

また、パスの変換は必要ですね。原因箇所を探している時に、font-awesome.min.css には相対パスで書かれているからパスの変換は必要だと気付きました。

すでに GitHub に修正版がありましたので試しました。ほぼ上手くいっているように思えます。@font-face の url() は問題ありません。私が先に書いた clip-path などの url() も問題ありません。

ただ、以下の CSS の場合に問題がありました。URL をシングルクォーテーションやダブルクォーテーションで囲んだ場合…

/* #my-id は <svg> の <filter> の id */
.sample-3 {
  filter: url('#my-id');
}

.sample-4 {
  filter: url("#my-id");
}

このようにパスが変換されます。

.sample-3 {
  filter: url( https://code.local/wp-content/themes/cocoon-child-master /'#my-id')
}

.sample-4 {
  filter: url( https://code.local/wp-content/themes/cocoon-child-master /"#my-id")
}

※ パスの途中にスペースがあるのはフォーラムが原因です。実際にはスペースは入りません。

This post was modified 7か月前 2回 by Akira

   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

ご確認いただきありがとうございます。
確かにクォーテーションがある場合にも対応しなければいけませんね。
以下の処理でクォーテーション除去を行いました。
https://github.com/xserver-inc/cocoon/commit/cad4f31b23e1967fe56da9800ce4c808c7977f48


   
Akira reacted
返信引用
(@akira)
Famed Member Registered
結合: 6年前
投稿: 1657
 

試した限り、url() に関する問題は全て解消しました。

ただ、もう 1 点問題を発見しました。これが最後の問題だと思います。

子テーマの style.css に @import を書いたとします。

@import url("/sample-font.css");

@import は先頭にないといけませんが、縮小後は添付画像のように CSS の途中に出力され CSS エラーになります。スキンの Metal Styles を使う場合も同様にエラーになります。

ファイルから取得する CSS とインライン CSS に対し、それぞれ別に縮小処理の minify_css() を実行した後に結合しているのが原因だと思います。

※ ファイルから取得する CSS に対しては minify-css.php の 174 行目 で。

※ インライン CSS に対しては minify-css.php の 111 行目 で。

ファイルから取得する CSS とインライン CSS を縮小する前に結合して、結合後に minify_css() を実行すれば問題は解決しました。

matthiasmullie/minify は @import を先頭に移動する ため、最後の最後に全ての CSS に対し minify_css() を 1 回だけ実行すればいい気がします。

This post was modified 7か月前 by Akira

   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

ご確認に加えて詳細な調整までしていただいてありがとうございます!

こんな感じで修正してみました。
https://github.com/xserver-inc/cocoon/commit/c02a8cf272004c0eeb621a7bf3476628f0cc4b01
ここでファイルのCSSは無駄にminify_cssしちゃってるんですけど
https://github.com/xserver-inc/cocoon/blob/c02a8cf272004c0eeb621a7bf3476628f0cc4b01/lib/page-speed-up/minify-css.php#L81
ここら辺の処理はCSSが縮小化されているのを前提に書いたので、下手に縮小化を解除してしまうとちょっと怖いかも。
https://github.com/xserver-inc/cocoon/blob/c02a8cf272004c0eeb621a7bf3476628f0cc4b01/lib/page-speed-up/minify-css.php#L178-L206


   
Akira reacted
返信引用
(@akira)
Famed Member Registered
結合: 6年前
投稿: 1657
 

大変お手数をおかけしました。ありがとうございました。

私が試した範囲では問題なく縮小できています。

ここら辺の処理はCSSが縮小化されているのを前提に書いたので、下手に縮小化を解除してしまうとちょっと怖いかも。

おっしゃるとおりですね。css_url_to_css_minify_code() 内で縮小処理をしない場合、URL の前後にスペースを入れて url() を書くと変なパスに変換されました。

background-image: url( "sample.gif" );

 

ですので、現在の preg_replace であれば、css_url_to_css_minify_code() 内で縮小処理が必要ですね。

This post was modified 7か月前 4回 by Akira

   
わいひら reacted
返信引用
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16481
 

ご確認ありがとうございます。

投稿者:: @akira

ですので、現在の preg_replace であれば、css_url_to_css_minify_code() 内で縮小処理が必要ですね。

そうなんです。
できれば表記のゆれや、改行とかに左右されないところで置換をしたいので、とりあえずは今回の方法で1回バージョンアップ(アップデート)してみようと思います。

 


   
返信引用
共有:

問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。

また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。

「いいね!」機能はフォーラム登録者のみが利用できる機能です。

CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

最近の書き込みはこちら。

詳細なカスタマイズ依頼をするならこちら。

タイトルとURLをコピーしました