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

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カスタマイズ依頼

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

スキンからの設定値制御でチェックボック...
 
共有:
通知
すべてクリア

[解決済] スキンからの設定値制御でチェックボックスが無効にできない

10 投稿
2 ユーザー
3 Likes
3,818 表示
(@aoix)
Active Member Registered
結合: 6年前
投稿: 5
Topic starter  

Cocoon設定の「投稿エントリーカード」「関連記事投稿エントリーカード」「ページ送りナビ」の枠線表示を無効にしたいと思い、スキン内からPHP・CSV・JSONでそれぞれ試してみましたがどれも無効になりませんでした。

Cocoonバージョン: 1.3.7.3

CSVでは以下のように記入。

//エントリーカードの枠線を無効
entry_card_border_visible,0

PHPで以下のように記入した場合はエラーになります。(スキンのfunctions.phpは親テーマより後に読み込まれてる?)

//エントリーカードの枠線を無効
function is_entry_card_border_visible(){
return false;
}

表示されるエラー

Fatal error: Cannot redeclare is_entry_card_border_visible() ~

他の設定は問題なく変更できるのですが、チェックボックスの無効だけ制御できてないように思います。


   
わいひら reacted
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16475
 

ご報告ありがとうございます!
取り急ぎ不具合を修正したものだけアップしておきました。
https://github.com/yhira/cocoon/archive/master.zip

PHPで以下のように記入した場合はエラーになります。(スキンのfunctions.phpは親テーマより後に読み込まれてる?)

公開ページでは、親テーマの再々先頭で読み込んでいます。
少なくともis_entry_card_border_visibleよりも先に読み込まれています。

ただ、設定ページでの読み込みは遅いです。それがエラーの原因だと思います。
設定画面での呼び出しのことを失念していました。

けれどこれは、Cocoon設定ページに「スキン制御」を表示させるには、設定を保存してデータベースに保存した後、値を取得する必要があるので、設定画面では、どうしてもかなり後の方に読み込む必要があるからです。
以前はその書き方でもOKだったんですか、Cocoon設定ページに「スキン制御」を表示させるには、そのようにせざるを得ませんでした^^;

なので、1.3.7以降で関数制御するには、以下のように!function_existsといった関数の存在確認をする必要もあるかもしれません。

//エントリーカードの枠線を無効
if ( !function_exists( 'is_entry_card_border_visible' ) ):
function is_entry_card_border_visible(){
  return false;
}
endif;

※上記の制御方法だと「Cocoon設定」ページに「スキン制御」は表示されません。

スキンのデモのサンプルコードも!function_existsを使ったものに修正しておきました。

 


   
(@aoix)
Active Member Registered
結合: 6年前
投稿: 5
Topic starter  

早速のご対応ありがとうございます!

!function_existsでいけるのは確認していたのですが、それでよかったんですね!
アップしていただいた修正版で試してみました。

PHPでは以下のように記入。

//エントリーカードの枠線を無効
if ( !function_exists( 'is_entry_card_border_visible' ) ):
function is_entry_card_border_visible(){
return false;
}
endif;

//関連記事エントリーカードの枠線を無効
if ( !function_exists( 'is_related_entry_border_visible' ) ):
function is_related_entry_border_visible(){
return false;
}
endif;

//ページ送りナビの枠線を無効
if ( !function_exists( 'is_post_navi_border_visible' ) ):
function is_post_navi_border_visible(){
return false;
}
endif;

CSVでは以下のように記入。

entry_card_border_visible,0
related_entry_border_visible,0
post_navi_border_visible,0

試した結果、

PHP…チェックボックスの無効は3つとも制御OK
CSV、JSON…エントリーカードの枠線は無効にできるが関連記事とページ送りナビの枠線は無効にならない

本体に支障をきたす部分ではないので、お時間のある時にでもご確認いただければと思います。


   
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16475
 

テーマ表示部分は修正してましたが、設定値取得部分の変更を忘れていました。

修正しておきました。
https://github.com/yhira/cocoon/archive/master.zip
多分これで改善されたと思います。

あと、PHPでの指定は以下の「グローバル変数を使った方法」の方が良いかもしれません(テーマ設定ページのスキン制御が効くので)。
https://wp-cocoon.com/skin-functions-php/

global $_THEME_OPTIONS;
$_THEME_OPTIONS = array(
  'entry_card_border_visible' => '0',
  'related_entry_border_visible' => '0',
  'post_navi_border_visible' => '0',
); 

おそらくご存知の上であえて、関数のオーバーライドを利用した記述(もしくはテスト)であれば、それはそれで全然問題ないです。


   
(@aoix)
Active Member Registered
結合: 6年前
投稿: 5
Topic starter  

修正ありがとうございます!
一通り試しましたがテーマ表示部分は設定変更が問題なく反映されるようになりました。

ただ、設定画面で以下2点ちょっと気になります。

  • エントリーカード枠線表示・・・設定の有無に関わらずチェックが入らない
  • 関連エントリーとページ送りナビの枠線・・・無効設定時にチェックが入っている

※いずれもスキンからの設定は記入通りに反映されています。

全ての方法でやってみましたが、やはりCSVが簡単でいいですね!
少ない記述で設定できるのは使いやすいです。色々試してみたくなります ? 


   
わいひら reacted
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16475
 

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

設定画面で以下2点ちょっと気になります。

これは、スキン制御下でということでしょうか。
それとも、スキン制御を行っていなくても設定が変更できないということでしょうか。

CSV楽ですよね(笑)
僕も今、CSVしか使ってません。
カッコとかクォーテーションで囲まなくていいのは、地味に軽減になりますよね。書式を覚えるのも楽ですし。

,,をコメントとして使えるのも地味に便利(※Cocoon設定のCSV制御のみに有効な方法だけど)。


   
(@aoix)
Active Member Registered
結合: 6年前
投稿: 5
Topic starter  

『エントリーカード枠線表示』
スキン制御化・スキン制御を行っていない、どちらの場合でもチェックが入らない。

『関連エントリー・ページ送りナビの枠線』
スキン制御化でチェックを無効にしているのにチェックが入っている。

以上のような状況です。

個人的には末尾のカンマを削除し忘れることがよくあるので、CSVで制御できるのは助かります。あとCSVでコメントが使えるのも親切すぎます!


   
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16475
 

『エントリーカード枠線表示』
スキン制御化・スキン制御を行っていない、どちらの場合でもチェックが入らない。

スキン制御下で制限はできないのは仕様です。
スキン制御を行っていない場合は、僕の環境からは変更出来るようです。
functions.phpに関数のオーバーライドが残っているということはないでしょうか。
もし残っていない場合は、スキンを「なし」状態にしたとしても、不具合が再現されますでしょうか。

『関連エントリー・ページ送りナビの枠線』
スキン制御化でチェックを無効にしているのにチェックが入っている。

これは、スキン制御している場合は、以前のテーマの設定状態が表示されます。
このようにしているのは理由があって、そうしないと「スキン制御」で設定した値が、「Cocoon設定値」に保存されてしまうからです。
「スキンを使用していたら設定値が変わってしまった」ということがないようにこのようにしています。


   
(@aoix)
Active Member Registered
結合: 6年前
投稿: 5
Topic starter  

スキン制御下で制限はできないのは仕様です。
スキン制御を行っていない場合は、僕の環境からは変更出来るようです。
functions.phpに関数のオーバーライドが残っているということはないでしょうか。

確認したらfunctions.phpにオーバーライドが残っていました。本当に申し訳ありません…。

仕様の件も理解できましたのでスキンからの制御も利用していきたいと思います。
お忙しい中、何度もご確認いただきありがとうございました。


   
わいひら reacted
わいひら
(@yhira)
Illustrious Member Admin
結合: 6年前
投稿: 16475
 

いえいえ、とりあえずその部分は不具合ではなかったようで安心しました^^

こちらこそ、重要な不具合をご報告いただいてありがとうございます!


   
共有:

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

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

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

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

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

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

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

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