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

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

WordPress 固定ページのパーマ...
 
共有:
通知
すべてクリア

[解決済] WordPress 固定ページのパーマリンクの拡張子を .html にしたい

5 投稿
2 ユーザー
6 Reactions
2,397 表示
(@aoi77)
Active Member Registered
結合: 5年前
投稿: 10
トピックスターター  

初めまして、お世話になります。

 

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

 

 

フォーラムを利用させていただくのは初めてでして、

なにか不手際や記入漏れがあったらすみません(汗


   
みるみ
(@mirumi)
Reputable Member Registered
結合: 5年前
投稿: 292
 

こんにちは。

予想ですけど、

// flush_rewrite_rules( false );

の部分を一度でもコメント解除して実行してみましたでしょうか?

リライトルールはDBを更新しないと反映されないのでこの関数が必要なんですが、毎度呼び出すと負荷がかかるのでコメントアウトされて紹介されていたとかそんな感じじゃないでしょうか。

ちなみに僕の環境ではちゃんと動作しましたよ。

(それとglobal$wp_rewrite;の間にスペースがないのが気になりました。動作には影響ないと思いますが。)


   
わいひら and aoi77 reacted
(@aoi77)
Active Member Registered
結合: 5年前
投稿: 10
トピックスターター  

みるみ様

こんにちは

早速のご助言ありがとうございます!

 

まず先に、正しいコードを貼り付けられておらず

申し訳ありません ? 再度添付させていただきます(汗

 

 

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行は空けた方がいいのかどうか」…?

 

など、おそらくごくごく初歩的であろう質問でお恥ずかしいのですが、

なにかアドバイスなどございましたらご教授いただけないでしょうか。

 

どうぞよろしくお願いいたします。


   
みるみ
(@mirumi)
Reputable Member Registered
結合: 5年前
投稿: 292
 
投稿者:: @aoi77

ただ「毎度呼び出すと負荷がかかる」とのことですので、
果たして削除してもよかったのだろうか…と少し悩みますね(汗

うまくいったようで良かったです。
一度でも実行したらもう削除しちゃっても大丈夫ですよ。「変更を反映するために」一度だけでいいからコメント解除する必要があった、ということです(URL構造を変えたいなどあったら当然もう一度呼び出す、ということですね)。

投稿者:: @aoi77

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 );
}
}

という感じ!


   
aoi77 and わいひら reacted
(@aoi77)
Active Member Registered
結合: 5年前
投稿: 10
トピックスターター  

みるみ様 

本当にありがとうございます! ? 

投稿者:: @mirumi

一度でも実行したらもう削除しちゃっても大丈夫ですよ。「変更を反映するために」一度だけでいいからコメント解除する必要があった、ということです

そういう意味があったのですね…!

ということは、すでに実行できたということで

flush_rewrite_rules( false );

の先頭に「//」をまた付けても大丈夫そうですね ? 

投稿者:: @mirumi

これを質問された方にははじめてお会いしました。笑
最初は不安ですよね。

全く関係ありませんのでご自分のお好きなように追記していくといいと思います。

現実的には「機能ごとに分かりやすくまとめておく」などはあった方がいいので、例えば関数ごとに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)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

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

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

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

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