サイト内検索
Cocoonフォーラム
書き込みの前に以下の3点をご確認ください。
何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。
不具合・カスタマイズ対象ページのURL:
相談内容:
不具合の発生手順:
解決のために試したこと:
※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。
環境情報の取得方法はこちら。
→ https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
→ https://wp-cocoon.com/theme-trouble/
フォーラム利用ガイドリンク
- フォーラムガイドライン
- よくある質問と答え(FAQ)
- サポート対象外のケース
- 原因不明の不具合用トラブルシューティング
- トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw)
- 真っ白画面でのエラーメッセージの確認方法
- ブラウザ環境チェックツール
- Cocoonカスタマイズ依頼
フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。
トピックスターター 2020年6月18日 13:42
初めまして、お世話になります。
WordPress 固定ページのパーマリンクの拡張子を
プラグインを使わずに「.html」にする方法について
ご相談させてくださいませ。
固定ページにはパーマリンクに拡張子を付けられないため
いままで「.html on PAGES」というプラグインを使って
固定ページの拡張子に「html」を付けていました。
ですがもう10年も更新されていないプラグインですし、
可能であれば削除したいと思い別の方法を探しておりました。
そこでプラグインを使わずに「functions.php」へコードを追加し
固定ページの拡張子に「html」が付けられる設定ができるか試してみることにしました。
いくつかのサイトを参考にして、
Cocoon Child: テーマのための関数 (functions.php)の↓
<?php //子テーマ用関数
if ( !defined( 'ABSPATH' ) ) exit;
//子テーマ用のビジュアルエディタースタイルを適用
add_editor_style();
//以下に子テーマ用の関数を書く
一番下に以下のコード↓を書き加えてみたのですが
add_action( 'init', 'mytheme_init' );
if ( ! function_exists( 'mytheme_init' ) ) {
function mytheme_init() {
global $wp_rewrite;
$wp_rewrite->use_trailing_slashes = false;
$wp_rewrite->page_structure = $wp_rewrite->root . '%pagename%.html';
// flush_rewrite_rules( false );
}
}
「404 Not Found」エラーになり
固定ページが表示されなくなってしまいます。
- 書き込むコードが間違っているのか
- 書き込む場所が間違っているのか
もし原因がわかる方がいらっしゃれば
なにかご助言いただけますと幸いです。
よろしくお願いいたします。
WordPressは最新の 5.4.2
使用テーマは Cocoon Child
パーマリンク設定は以下のようになっています。
WordPress>設定>パーマリンク設定>カスタム構造
◎カスタム構造 https://ドメイン.com/ %post_id%.html
フォーラムを利用させていただくのは初めてでして、
なにか不手際や記入漏れがあったらすみません(汗
トピックスターター 2020年6月18日 16:25
みるみ様
こんにちは
早速のご助言ありがとうございます!
まず先に、正しいコードを貼り付けられておらず
申し訳ありません ? 再度添付させていただきます(汗
add_action( 'init', 'mytheme_init' );
if ( ! function_exists( 'mytheme_init' ) ) {
function mytheme_init() {
global $wp_rewrite;
$wp_rewrite->use_trailing_slashes = false;
$wp_rewrite->page_structure = $wp_rewrite->root . '%pagename%.html';
// flush_rewrite_rules( false );
}
}
>コメント解除して実行
// flush_rewrite_rules( false );
コメント解除…!? とハテナが浮かびましたが
『先頭の「//」を取り除いてみてはどうか?』
という解釈で合っているでしょうか ?
試しに「//」を削除→更新→固定ページの「お問い合わせ」「サイトマップ」などのURLを確認
としてみたところ、
「404 Not Found」エラーは出ずに、
きちんとページが表示されたまま
「.html」が末尾に付いておりました!!
ただ「毎度呼び出すと負荷がかかる」とのことですので、
果たして削除してもよかったのだろうか…と少し悩みますね(汗
あとコードを記述する場所についてなのですが、
テーマのための関数 (functions.php)原文↓
<?php //子テーマ用関数
if ( !defined( 'ABSPATH' ) ) exit;
//子テーマ用のビジュアルエディタースタイルを適用
add_editor_style();
//以下に子テーマ用の関数を書く
5行目「add_editor_style();」の真下の6行目に入れるべきか
7行目「//以下に子テーマ用の関数を書く」の真下の8行目に入れるべきか
というかどちらに入れるにしても「行を1行は空けた方がいいのかどうか」…?
など、おそらくごくごく初歩的であろう質問でお恥ずかしいのですが、
なにかアドバイスなどございましたらご教授いただけないでしょうか。
どうぞよろしくお願いいたします。
2020年6月18日 17:17
ただ「毎度呼び出すと負荷がかかる」とのことですので、
果たして削除してもよかったのだろうか…と少し悩みますね(汗
うまくいったようで良かったです。
一度でも実行したらもう削除しちゃっても大丈夫ですよ。「変更を反映するために」一度だけでいいからコメント解除する必要があった、ということです(URL構造を変えたいなどあったら当然もう一度呼び出す、ということですね)。
5行目「add_editor_style();」の真下の6行目に入れるべきか
7行目「//以下に子テーマ用の関数を書く」の真下の8行目に入れるべきか
というかどちらに入れるにしても「行を1行は空けた方がいいのかどうか」…?
これを質問された方にははじめてお会いしました。笑
最初は不安ですよね。
全く関係ありませんのでご自分のお好きなように追記していくといいと思います。
現実的には「機能ごとに分かりやすくまとめておく」などはあった方がいいので、例えば関数ごとに1行あけるとか、みなさんそういう風にしていると思います。
コメントで区切るともっと見やすくなりますよ。
//*********固定ページのURL末尾に.htmlを付加する************
add_action('init','mytheme_init' );
if ( ! function_exists('mytheme_init' ) ) {
function mytheme_init(){
global $wp_rewrite;
$wp_rewrite->use_trailing_slashes =false;
$wp_rewrite->page_structure = $wp_rewrite->root .'%pagename%.html';
// flush_rewrite_rules( false );
}
}
という感じ!
トピックスターター 2020年6月19日 00:04
みるみ様
本当にありがとうございます! ?
一度でも実行したらもう削除しちゃっても大丈夫ですよ。「変更を反映するために」一度だけでいいからコメント解除する必要があった、ということです
そういう意味があったのですね…!
ということは、すでに実行できたということで
flush_rewrite_rules( false );
の先頭に「//」をまた付けても大丈夫そうですね ?
これを質問された方にははじめてお会いしました。笑
最初は不安ですよね。全く関係ありませんのでご自分のお好きなように追記していくといいと思います。
現実的には「機能ごとに分かりやすくまとめておく」などはあった方がいいので、例えば関数ごとに1行あけるとか、みなさんそういう風にしていると思います。
行の空白が「全く関係なかった」と初めて知りました…!
文字間の「半角の空白の数」や、文毎の「行間隔の数」など、
てっきりなにかしらの規則や法則があるのだと思い込んでおりました ?
無知全開でお恥ずかしい限りです(泣)
>コメントで区切る
なるほど、そんな使い方もできるのですね!
みるみ様のコメントを元に、コードの記述を以下のようにしてみました↓
<?php //子テーマ用関数
if ( !defined( 'ABSPATH' ) ) exit;
//子テーマ用のビジュアルエディタースタイルを適用
add_editor_style();
//以下に子テーマ用の関数を書く
//*********固定ページのURL末尾に.htmlを付加する*********
add_action('init','mytheme_init' );
if ( ! function_exists('mytheme_init' ) ) {
function mytheme_init(){
global $wp_rewrite;
$wp_rewrite->use_trailing_slashes =false;
$wp_rewrite->page_structure = $wp_rewrite->root .'%pagename%.html';
// flush_rewrite_rules( false );
}
}
ドキドキしながら更新を押してみたところ、
エラーも出ず正常に表示され、URLの末尾にも「.html」が付いたまま!でした!
私でも理解できるくらい丁寧にご指導くださり、
本当にありがとうございました(#^^#)
またなにかあったら、どうぞよろしくお願い致しますm(__)m
問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。
また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。
(CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。
フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。
最近の書き込みはこちら。
詳細なカスタマイズ依頼をするならこちら。