WordPress “Custom Permalinks”で引っ越したブログのURLを維持する

移転前のURLを元のブログから読み込んで、インポートした移転先ページのURLパスを同じように書き替える方法です。WordPressにはCustom Permalinksというプラグインがあって、これを使うとすべてのURLを自由に変更できます。ただ、その場合問題となるのが修正URLの入力です。1ページ毎に入力してURLを直していたんではキリがありません。そこでそれを一気に自動入力してくれるプラグインを作ってみました。

このスクリプトはPHPのバージョンが5.3以上でないと動きません。近々修正します。

WordPressにはCustom Permalinksというプラグインがあって、これを使うとすべてのURLを自由に変更できます。

もちろんドメインは変更できませんが、ドメイン以降のURLは自由に変えられます。

Custom Permalinksの設定は投稿の編集画面で出来ます。Custom Permalinksの設定画面

ただし、複数のページで同じURLを登録できてしまうという欠点もあります。注意すれば問題ないのですが、この世に同じURLのページは複数存在しないのが鉄の掟。同じURLを複数登録すれば、当然正しく表示されません。

このCustom Permalinksを使えば、引っ越した先のWordPressで、引越し前のブログと同じパスを維持できます。

ただ、その場合問題となるのが修正URLの入力です。1ページ毎に入力してURLを直していたんではキリがありません。

という事で、移転前のURLを元のブログから読み込んで、インポートした移転先ページのURLを書き替えるプラグインを作ってみました。

old permalinks keeper

自作プラグインの名前は、old permalinks keeper としました。

このプラグインは、インポートしたページのURLを読み込んでCustom Permalinksに登録するだけのプラグインです。登録後、old permalinks keeperは削除して構いませんが、Custom Permalinksを無効にするとURLは変更前に戻ってしまいます。

ダウンロード: old permalinks keeper

old permalinks keeperの使い方

old permalinks keeperを使う前に必ずCustom Permalinksをインストールして、有効化してください。

Custom Permalinksはプラグインの検索からインストールできます。
Custom Permalinks

old permalinks keeperの方は、検索しても出て来ません。ここからダウンロードして、圧縮されているファイルをローカルで展開します。

展開した状態で、フォルダごとまとめて”wp-content/plugins”にFTPでアップロードしてください。

アップロードが終わればプラグイン一覧に”old permalinks keeper”の名前があるので有効化します。

有効化できるとサイドバーの「設定」の中に「インポートページのURLを設定」という項目が増えていますので、そこへ移動してください。

opk2

移動すると次のように表示されます。

opk3

旧サイトのURL」には移転前のブログのトップページURLを入力してください。
例)http://www.example.com/ (一番最後のスラッシュはあってもなくても対応します)

記事一覧ページ最後のURL」は、トップページからたどれる記事一覧の最後のURLです。
例)http://www.example.com/index-123.html (省略せずに全部書く)

Seesaa Blog だと、http://xxx.seesaa.net/index-10000.html のように「そんなにたくさんないし」という位大きな数字を入れると自動で最後のページに飛びます。ただしブラウザのアドレスバーの表示は http://xxx.seesaa.net/index-10000.html のままなので、一歩進んで一歩下がるようなカンジでアドレスバーを変更させて、URLを取得してください。

まだトップページだけで収まっているページ数の場合は「記事一覧ページ最後のURL」は空欄にします。

個別ページURLの末尾から削除」は、URLがたとえば .html で終わっているけど、それいらないという時に書きこんでください。書き込んだ文字列と同じ末尾だった場合、それが削除されます。消したいものがない場合は空欄にします。

個別ページへのリンク識別タグ」は、記事一覧ページの中で、どこが個別ページへのリンクなのかを識別するために必要です。通常、記事一覧ページで各記事のタイトルをクリックすれば、そのページに移動するリンクになっています。そのタイトルリンクの開始タグをそのまま書きこんでください。

次のようなソースなら、<h1 class=”entry-title”> と書き込みます。
<h1 class=”entry-title”><a class=”new_link” href=”http://xxx.seesaa.net/article/xxxxx.html” rel=”bookmark”>かぎ針編みの湯たんぽカバー</a></h1>

入力が終わったら「送信」ボタンを押します。

送信ボタンを押すと、次のような表示に変わります。

opk4

この例では、現在のURL archives/2540 が article/301807656 に変更されます。移転前のURLが article/301807656.html なので、そこから .html を削除した形です。この .html は前のページで「個別ページURLの末尾から削除」の項目に書きこまなければ削除されません。

もし、同じタイトルのページが複数あった場合には次のように表示されます。そのページはURL変更の対象から外れますので、あとから個別に訂正してください。

opk5

また、公開していない下書きページのURLは取得できないので変更されません。必要ならプラグインを使う前に移転前のブログの下書き記事を公開するか、後から手動でURLを修正してください。

確認したら「送信」ボタンを押してください。次のように表示されて終了です。

opk6

最初に書いた通り、old permalinks keeperは削除して構いませんが、Custom Permalinksを無効にするとURLは変更前に戻ってしまうので注意してください。

PHPのmb_convert_encodingを使って文字コードを検出する方法

読み込んだ文字列の文字コードがわからない場合はどうすればいいか?次の方法を試してみたら、うまく行きました。PHPには文字コードを変換してくれるmb_convert_encodingという関数があります。元の文字コードがわからなくても自動判別をしてくれるようになっているんですが、それでうまく判別できない時に mb_convert_encoding 関数を利用して、文字コードを調べる方法です。

PHPには文字コードを変換してくれるmb_convert_encodingという関数があります。

元の文字コードがわからなくても自動判別をしてくれるようになっているんですが、それでうまく判別できない時に mb_convert_encoding 関数を利用して、文字コードを調べる方法です。

mb_convert_encoding 関数

string mb_convert_encoding( $str, $to_encoding, $from_encoding );

$str に変換したい文字列
$to_encoding に変換後の文字コード
$from_encoding に変換前の文字コード を指定します。

$from_encoding には配列またはカンマ区切りの文字列で文字コードを複数指定できます。複数指定した場合は順番に試していって該当する文字コードが適用されます。

例えば、Shift_JISのWebページを $buff に読み込んで($buffの中にShift_JISの文字列)

$string = mb_convert_encoding( $buff, ‘UTF-8’, ‘SJIS’ );

とすれば、$string にはUTF-8に変換されたWebページが入ります。
(PHPのマニュアルにはSJISと書いてありますが、試してみたらShift_JISでも大丈夫でした)

変換前の文字コードがわからない場合は、$from_encoding を省略すると、そこに mb_internal_encoding() の結果が割り当てられます。(内部文字エンコーディングが割り当てられます)

また言語設定が Japanese の場合は、$from_encoding を auto にすると “ASCII,JIS,UTF-8,EUC-JP,SJIS” が割り当てられます。(PHP: サポートされる文字エンコーディング – Manual

$from_encoding を省略したり、auto を指定したりしてうまくいけばいいんですが、うまくいかない場合は $from_encoding を正しく指定しなければいけません。

読み込んだ文字列の文字コードがわからない場合はどうすればいいか?

次の方法を試してみたら、うまく行きました。$str に変換したいけど文字コードがわからない文字列が入っています。

$to_encoding = 'UTF-8';
$from_encoding = null;

foreach(array('UTF-8','SJIS','EUC-JP','ASCII','JIS') as $charcode){
	if(mb_convert_encoding($str, $charcode, $charcode) == $str){
		$from_encoding = $charcode;
		break;
	}
}

if(!$from_encoding){
	echo 'ERROR: 文字コードが判別出来ませんでした。';
	return;
}

if($to_encoding == $from_encoding){
	echo $str;
	return;
}

echo mb_convert_encoding($str, $to_encoding, $from_encoding);

mb_convert_encoding($str, $charcode, $charcode) == $str

例えば $str が ‘UTF-8’ だった場合、mb_convert_encoding($str, ‘UTF-8’, ‘UTF-8’) の結果は、元の $str と同じになるはずです。

そうなった場合には、$from_encoding に’UTF-8’を代入して break します。

foreach を抜けても $from_encoding が null のままだったなら、array(‘UTF-8′,’SJIS’,’EUC-JP’,’ASCII’,’JIS’) の中には該当文字コードがなかった事になるのでエラーを表示して終了します。

もし、$from_encoding と $to_encoding が同じなら、変換の必要がないので、そのまま $str を表示します。

そうでない場合は $str を ‘UTF-8’ に変換して表示します。

文字列判別関数を作っておくと便利

たとえば、次のような文字列判別関数を作っておくと便利です。

function hoge($str){
	foreach(array('UTF-8','SJIS','EUC-JP','ASCII','JIS') as $charcode){
		if(mb_convert_encoding($str, $charcode, $charcode) == $str){
			return $charcode;
		}
	}

	return null;
}

MT形式からWordPressへ移行した際に画像をインポートするプラグイン

多くの無料ブログでつかっているMovable Type(MT)から引っ越す場合は画像ファイルまでは移動してくれません。そこで、MT形式からWordPressへ移行した際に画像をインポートするプラグインを作ってみました。英語がわからないのでネイティブに通じる名前なのかわかりませんが「Images importer from URL」という名前のプラグインです。ダウンロード:Images importer from URL 使い方

WordPressから他のWordPressに移行するツールでは、画像ファイルも同時に移動できます。でも多くの無料ブログで使っているMovable Type(MT)から引っ越す場合は画像ファイルまでは移動してくれません。

そこで、MT形式からWordPressへ移行した際に画像をインポートするプラグインを作ってみました。

Images importer from URL

英語がわからないのでネイティブに通じる名前なのかわかりませんが「Images importer from URL」という名前のプラグインです。

ダウンロード:Images importer from URL

Images importer from URLがやること

このプラグインがインポートするのは画像だけです。ページの内容そのものは無料ブログからWordPressへデータを移動する手順を参考に移行してください。

移動したページの中ではインポート元となるブログの画像に、imgタグでリンクが張られています。そこで、Images importer from URLは次の動作をします。ユーザーが操作するのは赤い行の2点です。

  1. インポート元となる旧ブログのURLを入力
  2. imgタグのsrc属性で移行前のブログのURLから始まっているものと、/ から始まっているものをすべて抽出
  3. / から始まっている場合は、WordPress内にファイルがあるかを調べる。
  4. WordPressにファイルがない場合と、移行前のブログのURLで始まっている全ての画像ファイルにリンク切れがないか調べる
  5. リンク切れのない、移行前のブログにある画像一覧を表示
  6. スタートボタンで画像一覧をWordPressにインポート
  7. 各ページの画像URLをインポートした画像URLに自動で置換

使い方

Images importer from URLを使う前にページは全てインポートしておいてください。

関連記事:無料ブログからWordPressへデータを移動する手順

次にImages importer from URLをダウンロードします。

ダウンロード:Images importer from URL

ダウンロードしたファイルは .zip形式で圧縮されています。それをWordPressにアップロードする前に解凍してください。

フォルダの中身は次のとおりです。

  • css.php
  • form.php
  • import.php
  • properties.php
  • images_importer_from_url.php
  • js.php
  • xml_http_request_server.php
  • img/
    • pleasewait.gif
  • languages/
    • images_importer_from_url-ja.mo
    • images_importer_from_url-ja.po

アップロードと有効化

解凍したファイルをフォルダごと全部、インポート先のWordPressの “wp-content/plugins/” に、FTPでアップロードしてください。

2014年12月8日追記)上記はすでに訂正しましたが、先ほどまでアップロード先を間違えて “wp-content/uploads/” と書いていました。正しくは “wp-content/plugins/” です。書き間違いすみませんでした。

ファイルをフォルダから出して、wp-content/plugins/ に直接入れるのはやめましょう。他のプラグインも含め、すべてのファイルをフォルダに入れず wp-content/plugins/ に全部直接入れた場合、どれかのプラグインに全く同じ名前のファイルがあったらファイルのアップロードで上書きされてしまい確実に壊れます。

アップロード後の場所は “wp-content/plugins/images_importer_from_url” となります。

正しく配置されていれば、「インストール済みプラグイン」の一覧に「Images importer from URL」があります。

インストール済みプラグインへ

説明が「インポートしたページの画像ファイルを抽出して、”wp-content/uploads/” に保存し、画像リンクを差し替えます。MT2形式の旧ブログからWordPressに移行した際にお使いください。」となっているのがImages importer from URLです。

インストール済みプラグイン一覧

Images importer from URLを見つけたら「有効化」という文字をクリックします。クリックして表示が「停止」に変わったら、有効化に成功しています。

プラグインを有効に

有効化出来るとダッシュボードのサイドバーの設定に「URLから画像をインポート」という項目が増えています。その「URLから画像をインポート」をクリックすると画像をインポートするページヘ移動します。

URLから画像をインポート

画像のインポートとURLの置換

画像のインポート画面に移動すると次のようになっているので送信ボタンの左に、エクスポートした移転前のブログのトップページのURLを正確に入力してください。


http://hoge.example.com/
http://hoge.example.com  (最後のスラッシュはあってもなくてもどちらでも構いません)

インポートする画面

何度試しても次の画面が表示される場合は、このプラグインがお使いのサーバーでは使えない可能性があります。その場合は、あきらめてください。

エラーの場合は

旧ブログのトップページのURLを入力したら「送信」ボタンを押してください。すると次のように旧ブログに現存する画像の一覧が表示されます。

2014年12月8日追記

Seesaaブログの場合は、画像ファイルのURLが違うようです。そのため正しいURLを入力しても「旧ドメインの画像URLは見つかりませんでした。」と表示されてしまうという事が判明しました。

もし正しいURLを入力しても「旧ドメインの画像URLは見つかりませんでした。」と表示されてしまう場合は、ブログのURLではなく、画像ファイルの置かれているURLを入力してください。

Seesaaブログの場合
ブログのURLが http://xxxxx.seesaa.net/ ですと
画像のURLは http://xxxxx.up.seesaa.net/ という風に seesaa.net の前に up. というのが追加されるようです。

もしかしたら、これはSeesaaブログに限らず、ご使用されているブログによっては起こることかもしれませんので、その場合は、画像の置かれている基準となるURLを調べて入力してください。

追記)コメント欄で情報をいただきました。「はてなブログ」の場合の画像URLは
http://cdn-ak.f.st-hatena.com/images/fotolife/m/※はてなID
となるそうです。情報有難うございます。

追記)アメブロからも移行できたというコメントをいただきました。

アメブロにはエクスポート機能はありませんが、本文の移行はつぎの記事の要領で出来るみたいです。「アメブロからWordPressへの移転方法(記事エクスポート編)

それでも、画像の移転はできないのですが、当ページのプラグインで次のようにURLを打ち込んで画像をインポートされたようです。以下、頂いたコメントです。

アメブロは画像フォルダを右クリックし、プロパティを出します。
そこに表示されてるアドレス(URL)のコピペで移行できました。
全部選択すると移行できないので、ユーザー名までとか、日付までとか、色々ためしてみてください。

iifu6

問題がなければ「スタート」ボタンを押してください。画像がたくさん表示されるのを想定して「スタート」ボタンはページの上と下についていますが、どちらを押しても同じです。

「スタート」ボタンを押すと、次のようにインポートが終わったものから背景がクリーム色に変わっていきます。その際、画像の横に表示されているURLが旧URLから移行後の新URLに変更されます。おそらく100個ほどの画像なら1分かからずにインポートが終わると思います。

インポートの途中

この時、インポートに失敗した画像はクリーム色の背景ではなく、ピンク色の背景になります。

クリーム色になったものはインポートが成功しているので、新しいWordPressのブログの中に画像があります。それらはクリーム色になった時点でページの中の画像URLも新しい画像のものへ書き替えられています。

ですから、URLを入れるところからもう一度やり直すと失敗した画像だけを再取得する事になります。ピンク色の背景になった画像があった時は、URLの入力からもう一度試してください。

すべての画像のインポートが終わると画面のいちばん下に次のように終了した旨が青い文字で表示されます。

インポート完了

インポートが成功していれば、各ページの画像URLはインポートした画像のURLに書き替えられています。

インポートした画像は メディア » ライブラリ で確認できます。ただし(タイトルなし)となっているので、必要なら編集してください。

メディアライブラリ

インポートが終われば、このプラグインは必要ありません。プラグインを停止してから、削除してください。

無料ブログからWordPressへデータを移動する手順

無料ブログの多くは、Movable Typeを使っているのでWordPressへの引越しは簡単に出来ます。今回はSeesaa Blogを例に方法を説明しますが、他のブログでも同じように出来ると思います。この方法はWordPressにすでにコンテンツのある場合でも使えます。元からあるページはそのままでインポートしたページが追加される形です。以下の手順で、MT形式からWordPressに移行するツールを使えば、複数のブログをひとつにまとめる事も出来ます。関連記事:MT形式からWordPressへ移行した際に画像をインポートするプラグイン

無料ブログの多くは、Movable Typeを使っているのでWordPressへの引越しは簡単に出来ます。今回はSeesaa Blogを例に方法を説明しますが、他のブログでも同じように出来ると思います。

この方法はWordPressにすでにコンテンツのある場合でも使えます。元からあるページはそのままで、そこに引っ越したページが追加される形です。ですから、以下の手順でMT形式からWordPressに移行すれば、複数のブログをひとつにまとめる事も出来ます。

関連記事:MT形式からWordPressへ移行した際に画像をインポートするプラグイン

無料ブログからWordPressへの引越し方法

データの出力をエクスポート、入力をインポートといいます。Movable Type形式の無料ブログからWordPressへ移行するためには、次の2つの手順が必要です。

  1. 無料ブログをMovable Type形式でエクスポートして、ファイルに保存
  2. 保存したファイルをWordPressにインポート

Seesaa BlogやFC2ブログなど多くの無料ブログでは、標準でエクスポート機能が使えます。ただし、ライブドアブログの無料版ではエクスポート機能は使えません。ライブドアからWordPressへ移行する場合は1ヵ月だけ有料契約する必要があります。

Seesaa BlogからWordPressへの移行手順

Seesaa Blogでの作業(エクスポート)

まず、管理画面の「設定」ページで「その他」にあるエクスポートをクリックします。(その右横に「お引越し機能」というボタンがありますが、これはよそのブログからSeesaaへ引っ越す時のボタンです)

管理画面でエクスポートをクリック

開いた画面では次のようになっています。WordPressへ引っ越す場合、ここで「文字コード」はUTF-8を選びます。「取得範囲」と「コメント/トラックバック/タグ」はお好みで選択してください。

Seesaa Blogの設定画面

「エクスポート」ボタンをクリックするとファイルが自動でダウンロードされます。ページの量によりますが、ダウンロードにかかる時間はおそらく一瞬だと思います。

ダウンロードされたファイルはmtarchive-xxxx-20yy-mm-20yy-mm.logというようにmtarchive(MTアーカイブ)で始まる名前です。

Seesaa Blog側での作業はこれで完了です。あとはダウンロードしたファイルをWordPressへインポートします。

WordPressでの作業(インポート)

Movable Type(MT)形式のデータをWordPressにインポートするツールは無料で用意されています。

WordPressのダッシュボードで ツール » インポートと進みます。

WordPress管理画面

「インポート」ページの項目に「Movable Type と TypePad」というリンクがあるのでクリックします。

Movable Type and TypePadをクリック

次のようなウインドウが開いたら右下の「いますぐインストール」ボタンを押します。上の方に「注意: このプラグインは現在使用している WordPress のバージョンではテストされていません。」と書いてありますが、2014年8月時点のWordPress(バージョン3.9)では問題なく動きました。

いますぐインストールをクリック

画面が変わったら「プラグインを有効化してインポートツールを実行」というリンクをクリックします。インストールしようとしているのはプラグインです。インポート後に削除したいなら、プラグインページで「Movable Type and TypePad Importer」という名前を探して削除します。

プラグインを有効化してインポートツールを実行

「Import Movable Type or TypePad」という画面に変わったら「ファイルを選択」ボタンを押します。この時「ファイルをアップロードしてインポート」というボタンは薄くなっていて、押すことが出来ません。

ファイルを選択ボタンを押す

使っているOSによって画面は違いますが、ファイル選択画面になるので、先程エクスポートしたmtarchiveで始まるファイルを選択します。選択が済むと、色が薄くて押せなかった「ファイルをアップロードしてインポート」というボタンが押せるようになるのでクリックします。

ファイルをアップロードしてインポートをクリック

Assign Authors」というページに変わるので、インポートするページの作者の名前を選びます。初期値ではエクスポート元のブログでの名前が表示されています。もし新しいブログで別の名前を使っているのなら、その下の「or map to existing」の右のSelectでWordPressに登録されている名前が選べるので、それを選びます。

名前を選択

下の図の場合、ページ作者の名前は「Tom」でインポートされます。ここが「Tom」ではなく「Select」のままだと、その上に表示されている、昔の名前「えったん」でインポートされます。

ウソです。えったんがWordPressのユーザーにいない場合、えったんは無視され登録してあるユーザーの名前で登録されます。登録ユーザーが複数いる場合、おそらくauthor IDが1のユーザーになるのではないかと思います。

昔の名前えったん

名前を設定したら「Submit」ボタンを押します。

するとすぐに画面が変わり、インポートしたページタイトル一覧が表示されています。その一覧の一番最後に「All done. Have fun!」と表示されていたら、インポートは成功です。

All done. Have fun!

先ほど書いたように、インポートツールはプラグインです。インポートが終わって削除したいなら、プラグインページで「Movable Type and TypePad Importer」という名前を見つけて削除します。

注意!MTからWordPressへの移行ツールでは画像ファイルは移動されません

実際にやってみると、あっという間に移行は終わります。ただ、ひとつだけ問題があります。画像は移行してくれないようです。

移行後にインポートしたページを見ると普通に表示されていますが、画像ファイルは元のブログにあるままです。このままでも画像は表示されていますが、元のブログを削除すると画像もなくなってしまうので表示されなくなります。

そこで、MT形式からWordPressへ移行した際に画像をインポートするプラグインを作ってみましたのでご利用ください。

MT形式からWordPressへ移行した際に画像をインポートするプラグインのページヘ移動する。

WordPress 更新しても上書きされないテーマのカスタマイズ方法

先日、WordPressを使っているブログで「テーマがバージョンアップされる度にスタイルシートを書き直している」という方がいたのですが、それは非常にムダだと思うわけです。次の手順でカスタマイズすれば、WordPressのテーマが更新されても、自分で変更した部分だけは更新されずに維持できます。

先日、WordPressを使っているブログで「テーマがバージョンアップされる度にスタイルシートを書き直している」という方がいたのですが、それは非常にムダだと思うわけです。

次の手順でカスタマイズすれば、WordPressのテーマが更新されても、自分で変更した部分は上書きされずに維持できます。

WordPressのカスタマイズとは

WordPressのカスタマイズとは、拡張する事と思ってください。

その「拡張」とは、プラグインやテーマを使って行ないます。WordPress本体をアップデートしても、自分で追加したプラグインやテーマはWordPress本体とは別物なので、本体をアップデートした後も変わりません。

もし、プラグインなどを使わずにWordPress本体を直接書き換えた場合、WordPressを更新すると、変更した箇所も含めて上書きされてしまいます。

同じように「テーマ」も、テーマそのものを直接書き換えると更新時に上書きされてしまいます。

そうならないためには、独自に改変した部分だけを別ファイルに保存しておいて、後から読み込むようにすれば「テーマ」本体のアップデートに関係なく維持されます。

テーマのスタイルシートを拡張する

まず、スタイルシートだけを独自に書き替えてみましょう。

具体的には次のように行ないます。これはWordPress Codexの「子テーマ」というページで説明されています。

今回は、Twenty Fourteenを「親テーマ」にして、「子テーマ」を作ってみます。自分が拡張したいテーマに置き代えて読み進めてください。

親テーマの確認

子テーマを作る前に、自分のサーバーで「親テーマ」の保存場所を確認しておきます。

サーバー上の wp-content/themes の中に twentyfourteen というディレクトリ(フォルダ)があります。これが「Twenty Fourteen」のテーマファイル群です。

サーバー上のイメージ
wp1

そのディレクトリの名前「twentyfourteen」を確認したら、「子テーマ」の作成にかかります。

これは、あくまで Twenty Fourteen を親テーマに選んだ場合ですので、自分が拡張したいテーマのディレクトリ名を確認してください。

子テーマの作成

まず、自分のパソコンでディレクトリ(フォルダ)をひとつ作ります。

名前は好きに付けていいですが「私のTwenty Fourteen」などと、漢字やひらがな、カタカナを使ったり、スペースを空けたりしないで半角英数字だけでつけるようにします。今回は「watashi-no_Twenty14」という名前にしました。このように半角の – (ハイフン) や _ (アンダーバー) 大文字、小文字、数字は使えます。ただし、無理に使う必要はないので、基本的には半角アルファベットの小文字と数字だけでつけたほうが無難です。

wp2

次にメモ帳で新しいファイルを作り、次のように書きます。

/*
Theme Name: 私のTwenty Fourteen
Template:   twentyfourteen
*/

@import url('../twentyfourteen/style.css');

これを「style.css」という名前で、先ほど作ったディレクトリ(フォルダ)「watashi-no_Twenty14」の中に保存します。名前は必ず「style.css」です。

これで「watashi-no_Twenty14」というフォルダの中に「style.css」というファイルがひとつだけある状態になっています。

では「style.css」の中に書いた事を説明します。

1〜4行目

このファイルは、拡張子が .css である通り、スタイルシートです。1行目の /* と4行目の */ はスタイルシートのコメントアウトです。

コメントアウトとは反映されない注釈部分で、コンピュータには反映されませんが人間がわかるよう説明を書いておく時に使います。

なので、/* から */ まではスタイルシートのデータとしては反映されません。それを利用して、この中にWordPress専用の情報を書いています。スタイルシートには反映されず、WordPressにだけ反映されるデータ部分が2〜3行目です。

Theme Name: 私のTwenty Fourteen
Theme Name: の後が拡張されたテンプレートの名前です。自分の好きな名前を書きます。
日本語も使えることを示すために、あえて日本語を使っていますが、オススメはしません。半角英数字で書いた方が無難です。
名前にはスペースキーを押した時の空白文字も使えますが、改行しないで一行の名前にします。
Template: twentyfourteen
Template: の次に来るのは、先ほど調べた「親テーマ」のあるディレクトリ(フォルダ)の名前です。
今回はTwenty Fourteenを例にしているので「twentyfourteen」ですが、自分の継承したい親テーマのディレクトリ名を書き込みます。

Theme Name: と Template: の直後に半角スペースをつけていますが、これは見やすくしているだけで、何個つけても同じです。なくてもよく、次のように書いても構いません。

/*
Theme Name:私のTwenty Fourteen
Template:twentyfourteen
*/

ここまで説明した、Theme Name: と Template: の行が「子テーマ」の情報に絶対に必要なデータです。テーマを一般公開する場合は、他にも次のような情報を書きますが、自分で使うだけなら Theme Name: と Template: だけで大丈夫です。

子テーマ – WordPress Codex 日本語版」より

/*
Theme Name:     Kid
Theme URI:      http://example.com/
Description:    Child theme for the Twenty Ten theme for WordPress
Author:         Demetris
Author URI:     http://example.com/about/
Template:       twentyten
Version:        0.1.0
*/
  • Theme Name (必須) 子テーマ名
  • Theme URI (任意) 子テーマのウェブページ
  • Description (任意) テーマの説明。例: わたしの最初の子テーマ。ワーイ!
  • Author URI (任意) 作者のウェブページ
  • Author (任意) 作者の名前
  • Template (必須) 親テーマのディレクトリ名, 大文字小文字を区別します
  • Version (任意) 子テーマのバージョン。例: 0.1, 1.0, etc

@import url(‘../twentyfourteen/style.css’);

この行は、WordPressではなくスタイルシートの記述部分です。

@import url(‘../twentyfourteen/style.css’); で、親テーマのあるディレクトリから style.css を読み込んでいます。この行がないと親テーマのスタイルシートは読み込まれません。スタイルシートを完全に一から自作するなら別ですが、そうでない場合は必須です。

赤字の部分は、自分の継承したい親テーマのディレクトリ名を書きます。つまり、Template: の行に書いたのと同じディレクトリ名です。

サーバーへアップロード

ここまで出来たら、作ったディレクトリ「watashi-no_Twenty14」とスタイルシート「style.css」を、サーバーにアップロードします。

FTPでアップロードするのではなく、ファイルマネージャーでサーバー上に新規作成する方法は「ロリポップサーバーのFTPにWordPressのファイルを簡単にアップロード | Area5.net  Arisaya blog」に書かれています。

アップロード先は、親テーマ Twenty Fourteen と同じ wp-content/themes です。

wp-content/themesの中に、親テーマ「twentyfourteen」と、子テーマ「watashi-no_Twenty14」の両方があるようにアップロードします。そして「watashi-no_Twenty14」の中にstyle.cssが入っている状態です。

サーバー上のイメージ
wp3

自作した子テーマを適用させる

アップロードが終わったら、WordPressにログインしてダッシュボードの「外観」» 「テーマ」と移動して「テーマの管理」ページを開きます。

ここまでの作業にミスがなければ、テーマの一覧の中に「私のTwenty Fourteen」があるはずです。

wp4

「私のTwenty Fourteen」にはサンプル画像が表示されていませんが、サンプル画像を作っていないからです。そのままで問題はありません。

「私のTwenty Fourteen」が表示されている場所にマウスを乗せると「有効化」と表示されますので、その「有効化」をクリックします。

wp5

問題がなければページの上の方に「新しいテーマを有効化しました。サイトを表示する」と表示されるのでサイトを表示してみます。

wp6

サイトが有効化されないとしたら、ここまでの手順のどこかを間違えています。

サイトを表示して、素のままの何も変更されていない「Twenty Fourteen」が表示されていたら成功です。何故でしょうか。だってまだ何もカスタマイズしていないからです。では、スタイルシートを改変してみましょう。

wp7

自作スタイルシートの追加

ここまで出来たら「子テーマ」は完成されています。ただ、まだ何も独自部分がないので親テーマと全く同じ状態です。

今からやる手順でスタイルシートを書けば今後はテーマの更新に影響されずに、拡張部分を維持できます。

独自のスタイルシートは、先程自分で作った style.css の続きに書きます。

Twenty Fourteenの背景色を変更する

今回は試しに子テーマを、親テーマと違う背景色に変更してみます。

style.css にすでに書きこんである部分はそのまま変更せずに、その後に独自のスタイルシートを書き込みます。

/*
Theme Name:私のTwenty Fourteen
Template:twentyfourteen
*/

@import url('../twentyfourteen/style.css');

::selection,
.search-toggle:before,
*{
	color: #444!important;
}

.primary-navigation li:hover > a,
.primary-navigation li.focus > a,
::selection,
.search-toggle,
.search-toggle:hover,
.search-box,
.site-info a,
.site-footer,
.grid .featured-content .entry-header,
#featured-content,
#masthead,
.content-sidebar,
#secondary,
#page:before{
	background: #fff;
	border: none;
}

Twenty Fourteenの背景色の変更はWordPress › フォーラム » Twenty Fourteen サイドバーの背景変更を参考にしました。

サーバーの自作「子テーマ」のディレクトリ「watashi-no_Twenty14」にある style.css を上記のように変更したら、もう一度サイトを表示してみます。無事に色が変わっていれば成功です。

wp8

スタイルシートを変更したい場合、今後は「親テーマ」をいじらずに、「子テーマ」の style.css だけを変更するようにします。そうすれば「親テーマ」が更新されても影響される(上書きされる)心配はありません。

スタイルシート以外の変更

スタイルシート以外を変更する場合は、その変更したいファイルを「子テーマ」にコピーして、そのコピーしたファイルを変更します。

例えば、header.php を変更したい時は、header.php だけを親テーマから子テーマへコピーして、それを書き替えます。

子テーマと親テーマに同じ名前のファイルがある時は、子テーマのファイルが適用され、子テーマにないファイルは全て、親テーマのものが読み込まれます。

style.css と同じように親テーマが更新されても、子テーマのファイルは上書きされてしまうことなく残っていますので、カスタマイズした部分は常に適用されます。