サイト内検索
Cocoonフォーラム
書き込みの前に以下の3点をご確認ください。
何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。
不具合・カスタマイズ対象ページのURL:
相談内容:
不具合の発生手順:
解決のために試したこと:
※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。
環境情報の取得方法はこちら。
→ https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
→ https://wp-cocoon.com/theme-trouble/
フォーラム利用ガイドリンク
- フォーラムガイドライン
- よくある質問と答え(FAQ)
- サポート対象外のケース
- 原因不明の不具合用トラブルシューティング
- トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw)
- 真っ白画面でのエラーメッセージの確認方法
- ブラウザ環境チェックツール
- Cocoonカスタマイズ依頼
フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。
Topic starter
2024年8月22日 22:25
----------------------------------------------
テーマ名:Cocoon
バージョン:2.7.6.1
カテゴリー数:19
タグ数:150
ユーザー数:1
----------------------------------------------
●関連投稿
https://wp-cocoon.com/community/postid/80691/
●現象
パターンに[toc]を記述し、これを配置した。
また、patternショートコードで呼び出した。
パターンも同様で、エラー(Internal Server Error)となります。
わいひら reacted
2024年8月23日 19:06
ご指摘ありがとうございます!
tocとpatternの重複に対応したものをアップしておきました。
https://github.com/xserver-inc/cocoon/commit/627d4510ff42b57cfafcf8f44866b26cd21a3c92
ただパターンのエディター画面の適切な部分に注意文を表示するところがなくて(思い当たらなくて)注意文はありません。
Topic starter
2024年8月23日 20:39
----------------------------------------------
テーマ名:Cocoon
バージョン:2.7.6.1
カテゴリー数:14
タグ数:12
ユーザー数:1
----------------------------------------------
[toc]が除外され、エラーとならない事を確認しました。
本件をクローズとします。
わいひら reacted
2024年8月23日 21:38
「外観」-「パターン」の方しか確認していません。
乱暴かもしれませんけれど、wp_dieを使用して、エラーにすることはできるみたいです。
簡単に確認しただけですので、場面の特定は甘いと思います。
(400にする必要があるか分かりませんでしたが、とりあえずしてしまいました。has_shortcode使った方が良いのかもしれないですね、オプションもありますし)
(400にする必要があるか分かりませんでしたが、とりあえずしてしまいました。has_shortcode使った方が良いのかもしれないですね、オプションもありますし)
function toc_shortcode_set_error($post_id) { // 自動保存や別の処理でないことを確認 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } // 投稿タイプが wp_block の場合に処理 if (get_post_type($post_id) === 'wp_block') { $post_content = get_post_field('post_content', $post_id); if (strpos($post_content, '[toc]') !== false) { // 保存処理をキャンセル wp_die(' [toc]ショートコードはパターンでは使用できません。保存がキャンセルされました。', '保存エラー', array('response' => 400)); } } } add_action('save_post', 'toc_shortcode_set_error');
すみません、試してみただけです。
わいひら reacted
2024年8月25日 22:18
ご確認いただきありがとうございます。
mk2さんさんのその発想はなかったです。
パターンエディター画面で使わせていただきました。
ただクラシックギターの場合、画面が切り替わってから出るので、文章紛失防止のため、エラーメッセージは表示しないようにしました。
2024年8月25日 22:53
お役に立てて良かったです。
ただクラシックギターの場合、画面が切り替わってから出るので、文章紛失防止のため、エラーメッセージは表示しないようにしました。
そうなんですよね。
wp_dieだと、クラシックエディタではどうかなと思っていました。
場面の特定が面倒で、その部分のif文は書かなかったのですけれど。
wp_dieのところを以下の書き換えてみました。
add_filter('redirect_post_location', function($location) { return add_query_arg('toc_error', 1, $location); }); // 保存をキャンセルするため false を返す return false;
先に書いたように場面の特定がない状態ですので、トータルでは以下のような状態なのですけれど。
function replace_toc_shortcode_and_set_error($post_id) { // 自動保存や別の処理でないことを確認 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return; } $post_content = get_post_field('post_content', $post_id); if (strpos($post_content, '[toc]') !== false) { add_filter('redirect_post_location', function($location) { return add_query_arg('toc_error', 1, $location); }); // 保存をキャンセルするため false を返す return false; } } add_action('save_post', 'replace_toc_shortcode_and_set_error');
そして、メッセージ表示用に以下を追加。
function show_toc_error_notice() { if (isset($_GET['toc_error'])) { echo '<div class="notice notice-error is-dismissible"><p><strong>エラー:</strong> [toc] ショートコードはパターンでは使用できません。</p></div>'; } } add_action('admin_notices', 'show_toc_error_notice');
上記のようにすると、以下のようにはできるみたいです。
そこまでするかというのはあると思います。
現状のブロックエディタだけの対応でも、十分なのではないかと思います。
(少し試してみただけです)
(少し試してみただけです)
すみません、テーマを修正いただいた分の確認は、まだできておりません。
(今、他のことをしているもので)
(今、他のことをしているもので)
後程確認して、返信させていただきます。
わいひら reacted
2024年8月26日 02:14
パターン編集画面は、以下のパターンで確認させていただきました。
①「Cocoon設定」-「エディター」で、Gutenbergを選択時
- 「外観」-「パターン」
- 「管理メニュー」-「パターン一覧」
上記は、2つとも保存しようとすると、エラーになることを確認させていただきました。
【①-1 「外観」-「パターン」】
【①-2「管理メニュー」-「パターン一覧」】
②「Cocoon設定」-「エディター」で、Gutenbergを非選択(クラシックエディタ時)
- 「外観」-「パターン」
- 「管理メニュー」-「パターン一覧」
上記共に、更新ができてしまいました。
②-2のケースは、想定されたものだと思います
②-1のケースは、実質的にパターン編集画面はGutenbergですので、wp_dieでエラーになっても問題ないのではないかと思います。
ただ、「Cocoon設定」でクラシックエディタを選択しているということは、投稿にはショートコードで埋め込むはず。
そう考えれば、クラシックエディタでは、②-1のパターン編集画面を選択することはないと考えても良さそうに思いますね。
ショートコードでパターンを投稿ページ等に埋め込んだ場合は、公開されるページでは、tocショートコードは機能しないので、問題ないはずですし。
既存などでパターンにtocショートコードが既にあり、ブロックエディタ使用で投稿編集画面の「パターン」から貼りつけた場合(※)は、今回の事象が発生はします。
こちらのケースは少ないでしょうし(使っていれば既に不具合が発生しているはず)。
あっても、お問い合わせがあった場合に説明して削除していただく方向という感じですよね。
※は以下のことです。
わいひら reacted
2024年8月26日 23:01
ありがとうございます。そんな方法があるんですね。
mk2さんさんのコードを利用させていただいて、クラシックエディターのメッセージにGitHubファイルを対応させてみました。
2024年8月27日 01:02
ご対応いただきありがとうございます。
前回と同じ組み合わせで確認してみました。
①「Cocoon設定」-「エディター」で、Gutenbergを選択時
- 「外観」-「パターン」
- 「管理メニュー」-「パターン一覧」
いずれの場合も、エラーメッセージが表示されました。
【①-1 「外観」-「パターン」】
【①-2「管理メニュー」-「パターン一覧」】
②「Cocoon設定」-「エディター」で、Gutenbergを非選択(クラシックエディタ時)
- 「外観」-「パターン」
- 「管理メニュー」-「パターン一覧」
【②-1 「外観」-「パターン」】
このケースでは、メッセージは特に表示されません。
(但し、投稿に貼り付ける時のことを考えると、ショートコードを使わざるを得ないはずで、こちらを使用することは考えにくいかと。)
【②-2「管理メニュー」-「パターン一覧」】
こちらのケースで、新たにメッセージが表示されるようになりました。
そして、すみません。
上記4ケースとも、パターンは保存されてしまいますね。
(きちんと確認ができていませんでした、申し訳ないです)
(きちんと確認ができていませんでした、申し訳ないです)
ただ、メッセージが表示されますので、この対応で十分だと思います。
(注意喚起、抑止はできると思ってます)
(注意喚起、抑止はできると思ってます)
パターンを、投稿等への貼りつける場合
- パターンをショートコードで貼りつける
- ブロックエディタでパターンを左側のインサーターから貼りつける
上記の項番1のケースでは、tocショートコードが無効になり。
項番2のケースでは、今回と同様の事象が発生する。
こちらも、確認させていただきました。
(想定通り)
パターン編集画面でメッセージが表示されますので、これで問題ないと思っています。
(今後お問い合わせがあった時のために、組み合わせを再確認してみたという感じです)
わいひら reacted
2024年8月27日 19:05
ご確認いただきありがとうございます。
【②-1 「外観」-「パターン」】
このケースでは、メッセージは特に表示されません。
(但し、投稿に貼り付ける時のことを考えると、ショートコードを使わざるを得ないはずで、こちらを使用することは考えにくいかと。)
僕もそう思うので、そのままにしようかと。無限ループ自体は対応されているので。
そして、すみません。上記4ケースとも、パターンは保存されてしまいますね。
(きちんと確認ができていませんでした、申し訳ないです)ただ、メッセージが表示されますので、この対応で十分だと思います。
(注意喚起、抑止はできると思ってます)
そうなんです。ただ、おっしゃる通りでそれで良いのかなと。
エラーと出て保存されるのは、ともその時は思いましたが、保存されずに何かの手違いで大きく書き込んだ文章をなくすよりは、良いなと。
結局メッセージが出て内容を伝えられれば良いので。
This post was modified 3か月前 by わいひら
2024年8月27日 19:38
結局メッセージが出て内容を伝えられれば良いので。
そう思います。
現状仕様で、十分だと思います。
ちょっとパターンは、動きが投稿ページ等とは、動きが違う感じですね。
①「外観」-「パターン」から作成した場合。
まずは新規作成のために、追加します。
すると、パターン編集画面が開きますが、この段階でもうIDが採番されているんですよね。
(投稿等では、post-new.php時点では、まだ採番されず、データベースへの保存もされないはず。)
(投稿等では、post-new.php時点では、まだ採番されず、データベースへの保存もされないはず。)
そして、何もせずに、パターンの一覧画面に戻っても、中身のないままパターンが作成されてしまっています。
②「管理メニュー」-「パターン一覧」から作成した場合
新規作成します。
「post-new.php」で開いていますので、まだ作成されていないはず・・・と思うのですけれど。
何もせずに、編集画面を抜けます。
「パターン一覧」に戻ると、作成されてしまっているんですよね。
投稿ページだと、この操作では作成されないと思うのですけれど。
パターンは、ちょっと違う何かがあるのかも・・・。
そんな感じで、今のところこれ以上深追いせずにおこうという感じです。
(深みにはまりそう・・・)
(深みにはまりそう・・・)
そんな感じで、最初にも書かせていただいた通り、現状仕様で良いのかなと思います。
(注意喚起は十分にできていると思います)
(注意喚起は十分にできていると思います)
問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。
また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。
(CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。
フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。
最近の書き込みはこちら。
詳細なカスタマイズ依頼をするならこちら。