WordPress で作ったサイトとは違うデザインのWebページを、WordPress で管理する方法の備忘録です。
状況と背景
- 1つのドメイン下での話
- WordPress をインストールして使っていたが、ランディングページ的なものを作りたくなり、しかし WordPress のテンプレートには当てはめたくなかったので、WordPress とは切り離し、静的に作成した
- この場合、sitemap.xml をどのように管理したらよいか?が課題になる
- 静的に作ったページを WordPress から吐き出した sitemap.xml では管理ができないので、sitemap.xml は別で作成して管理するようにした
- またこの場合、WordPress 側で更新があった際に sitemap.xml が更新されないという問題があり、これについては時々更新すればいいか、ぐらいの考えとした
- この状態で2年ぐらい過ぎたけど、なんだか気持ち悪いので静的ページも WordPress 管理にできないものか?と考えた
- ちなみに WordPress のテーマには Cocoon を使っている
対応の方向性
- WordPress の要素を含まない、固定ページテンプレートを作ればよいのでは?と考えた(以下:空テンプレートと呼ぶ)
- 固定ページの本文に静的ページのソースをまるごと流し込むイメージ
- 管理上、記事タイトルは入力するけど、それもフロントページには表示しない(WordPress 側にもっている情報で表示させたいものはない)
空テンプレートの作成と設置
空テンプレートの作成とファイルの設置については以下が参考になりました。
①テンプレートファイルの作成
- 新規にPHPファイルを作成する
- 中身は以下とする
<?php /* Template Name: name */ ?> <?php while (have_posts()): the_post(); ?> <?php the_content(); ?> <?php endwhile; ?>
- name の部分は任意の文字列(多分ファイル名と合わせた方がよい)
- 最後の3行は固定ページの本文を表示させる部分になっている
②ファイルの設置
- Cocoon は子テーマ運用しているので以下
/wp-content/themes/cocoon-child-master/
③自動整形の無効化
WordPress のエディタは自動整形機能によってHTMLタグが自動的に挿入されます。今回の場合、<html>から記述するソースを本文に入れるので、自動整形機能が動作していると、そこらじゅうに<p>タグが入ってしまい、レイアウト崩壊を招きます。よって、自動整形機能の動作を、特定の固定ページだけ止めたいということになります。
これについては以下の記事が参考になりました。
function.php の記述 + 固定ページ本文の追記でやりたいなと思いましたが、Cocoon 関連のファイルはいじりたくなかったので、Toggle wpautop というプラグインを導入することにしました。記事ごとに自動整形機能の動作を切り替えることができます。
④目次を非表示
Cocoon では自動で目次を生成して、見出しタグの前に表示する機能があるので、この機能をオフにします。固定ページについては記事別に表示/非表示ができます。
今回のページでは見出しタグの中身が画像で、その部分が目次用のコードに書き換えられてしまうということが起こり、目次機能をオフにすれば解決しそう?と考えたところ、正解となりました。
注意点
元々が静的なページだったのでディレクトリとファイルががFTPサーバーに存在します。この場合、WordPress は実際に存在しているものを優先表示するので、WordPress で管理しようとしているものが表示されません。
CSSファイル、JSファイル、画像ファイルなど、すでに設置してあるものはそのまま活かしたいと思ったので、今回については以下のようにしました。
jnagano.com/kowakunai_set/
ページのURL
jnagano.com/kowakunai/
こうすることでファイル内に記載されているURLを全て書き換える処理が必要となりましたが、自分的にはすっきりしたのでこれでよしとしました。