PHPのバージョンを7系にしてWordPress管理ページの表示が崩れた原因

このブログはまだPHP5で動かしていますが、自宅のPCにPHP7とWordPressの4.6を新規インストールして動かしたら管理画面の表示が崩れました。スタイルシートを読み込めてないようですが、原因はwp-include/plugin.php の 600行目でした。

ちなみに32Bit版 Linux Mint 18で次のようにして入れた PHP です。関係ないと思いますが、WebサーバーはH2Oでhttpsにしています。

sudo add-apt-repository ppa:ondrej/php
sudo apt-get update
sudo apt-get install php7.1-fpm php7.1-cgi php7.1-mbstring php7.1-mysql php7.1-xml php7.1-xmlrpc php7.1-xsl php7.1-zip php7.1-bz2 

wp-include/plugin.php の 600行目は次のようになっています。

do {
        foreach ( (array) current($wp_filter[$tag]) as $the_ )
                if ( !is_null($the_['function']) )
                        call_user_func_array($the_['function'], array_slice($args, 0, (int) $the_['accepted_args']));

} while ( next($wp_filter[$tag]) !== false );

この call_user_func_array が原因でした。上の部分を次のとおりに変えたら直りました。

do {
        foreach ( (array) current($wp_filter[$tag]) as $the_ )
                if ( !is_null($the_['function']) ){
                        $arr = array();
                        foreach(array_slice($args, 0, $the_['accepted_args']) as $a){
                            $arr[] = &$a;
                        }
                        call_user_func_array($the_['function'], $arr);
                }

} while ( next($wp_filter[$tag]) !== false );

PHP の関数 call_user_func_array へ渡す値が参照渡しになっていなかった事が原因です。上の改変箇所ではその値が参照渡しになるように変えています。

参考サイト PHP 5.3: 参照渡しの関数/メソッドを定義してた人は call_user_func_array に注意 – 肉とビールとパンケーキ by @sotarok

ただし、WordPress のバージョンをアップデートすると上書きされて元に戻ってしまうと思います。

プラグインを作る場合、この関数自体にはフックがないので、この関数を呼び出している元の関数にフックする必要がありそうです。

WordPressプラグイン カテゴリ毎の最新記事表示ウィジェット

WordPressでカテゴリーを指定して最新記事を表示できるウィジェットを作りました。アイキャッチを表示したい場合は画像も表示します。アイキャッチがない場合は記事本文の中から最初の画像を抽出できます。また、画像のサイズはピクセル単位で指定可能です。

ルックスは以前公開した「WordPress 同一DB内の別ブログ記事一覧表示ウィジェットプラグイン」と同じです。

最近の投稿が次の図の4つで、このうち「ケーキ」と「天丼食べた」が「グルメ」カテゴリー、その他が「未分類」の場合、カテゴリー別に2個のウィジェットを作ると下の赤枠内のように表示されます。

Recent posts of specific category

表示個数は指定できます。上述しましたが、画像のサイズも変更可能です。

表示個数とサイズは変更可能

インストール方法

WordPressの公式ディレクトリに「Recent posts of specific category」という名前で登録しましたので、ダッシュボードからインストールできます。

プラグインを探す際の目印は、当サイト「Big Bang」の公式アイコンです。

Big Bang

このマークは「Big Bang」の2つのBをかたどって作られたもので、宇宙の波動をイメージしています。


お使いのWordPressにログインしてダッシュボードの「プラグイン」⇒「新規追加」と移動します。

「プラグインを追加」の画面上部にある「プラグインの検索」に「Recent posts of specific category」と入力してEnterを押してください。候補がいくつか出てきますが、マークがBig Bangの公式アイコンで、作者が「dwm.me」になっているものが該当のプラグインです。

Recent posts of specific category

みつからない時は、「作成者」に「dwm.me」と入力して検索しなおしても出てきます。

pluginを作成者「dwm.me」で検索

Recent posts of specific category」が検索できたら「いますぐインストール」をクリックします。すると次の画面に移動します。

プラグインをインストール

ここで「プラグインを有効化」をクリックしてはじめて使えるようになります。「プラグインを有効化」をクリックするとインストール済みプラグイン一覧の画面に遷移します。

プラグインの一覧で、プラグイン名が「指定カテゴリーの最新記事」、説明が「選択したカテゴリに属している投稿の一覧を表示するウィジェットです。アイキャッチも表示することができます。」、作者が「dwm.me」のものが水色の背景になっていれば有効化されています。

プラグイン一覧の中に表示

設定方法

インストールと有効化ができたら、ダッシュボードの「外観」⇒「ウィジェット」と移動します。

画面の左側に使うことが出来るウィジェットの一覧が並んでいるので、そこから「指定カテゴリーの最新記事」を探します。

ウィジェットの選択

これをドラッグ&ドロップして、ウィジェットエリアの中の表示したい場所に配置します。配置できると次のように表示されるので各項目を設定します。

ウィジェットの設定

カテゴリー

ここで表示させたいカテゴリーを選択します。右端の逆三角を押すと登録済みカテゴリーの一覧が出てくるので、その中から選んでください。

タイトル

ここは指定しなくても構いません。ここにタイトルを指定するとウィジェットが表示される際にそのタイトルが表示されます。空欄にしておくと「(選択したカテゴリー名)の最新記事」というタイトルでウィジェットが表示されます。

表示する投稿数

一覧に表示させたい記事数を半角数字で記入します。数字を入れたのに、その数が反映されない場合は半角数字でなく全角で入力していないか確かめて下さい。

数字以外の文字、マイナスの値やゼロなど無効な数が指定された場合は5個表示します。指定個数分だけ記事がない場合はあるだけの表示になります。

リンクを別窓で表示

チェックを入れると、リンクをクリックした時に別窓を開いて表示します。

投稿日を表示しますか?

投稿日を表示させたい場合はチェックに印をつけて下さい。チェックしない場合は日付は表示しません。

日付の前で改行する?

この項目は「投稿日を表示しますか?」がチェックされていない場合は無視されます。

「日付の前で改行する?」をチェックしていない場合は、タイトルの後ろに日付を表示します。チェックを入れるとタイトルの下行に日付を表示します。

サムネイルを表示する?

チェックを入れるとアイキャッチが指定されているページでは、タイトルの左にアイキャッチを表示します。投稿ページにアイキャッチが指定されていない場合、以下の設定をしないと空白になります。

「サムネイルを表示する?」がチェックされていない場合、これより下の項目は指定しても無視されます。

横幅

タイトルの左に表示する画像の横幅を半角数字で指定して下さい。半角数字で指定していない場合、45ピクセルで表示します。

縦のサイズは元の画像に合わせた割合で自動調整します。比率を無視して正方形に表示させたい場合は次の項目にチェックを入れて下さい。

正方形で表示?

ここをチェックすると、正方形でない画像も比率を無視して正方形で表示します。サイズは上の項目「横幅」で指定したものになります。

本文中から画像を抽出する?

アイキャッチが指定されている場合はアイキャッチを表示しますが、アイキャッチがない場合に記事本文から画像を抽出して、最初に見つかったものを表示します。

ただし、横幅あるいは高さが1ピクセルの画像は抽出しません。

デフォルトのサムネイル

アイキャッチが指定されていない場合に、特定の画像を表示させたい時はここにそのURLを指定して下さい。

優先順位として

  • アイキャッチがあれば表示
  • 「本文中から画像を抽出する?」にチェックが付いていて、画像が見つかればそれを表示
  • そのどれもなければ指定したURLの画像を表示

となります。

画像がない時WordPressのロゴを表示?

この項目は「デフォルトのサムネイル」が指定されていれば無視されます。「デフォルトのサムネイル」が未指定で、ここにチェックを入れると、アイキャッチもなく本文中からの抽出画像もない時、タイトルの左にWordPressのロゴを表示します。

以上です。問題があった際はコメント欄にご記入くださると助かります。

Seesaa等で独自ドメインで公開しているブログを公開中断せずにWordPressへ移行する方法

Seesaaブログや、無料になったライブドアブログなどは、独自ドメインでブログを公開できますが、独自ドメインで運営しているブログの公開中断をせずに、そのままWordPressへ移行する方法です。

無料ブログで独自ドメインを使っていない場合や、ドメインを変更しても問題がない場合の移転方法は、このページではなく、次のページをご覧ください。 » 無料ブログからWordPressへデータを移動する手順

独自ドメインでブログ運営中の方がWordPressへ移行する際に悩むのは、WordPressをインストールして設定したくてもインストールページが開けないという事ではないでしょうか。

通常の方法でWordPressをインストールするには、そのドメインでトップページにアクセスする必要があります。ところが、そのドメインのトップページは、公開中のブログになっているので、インストールページが開けない。という事で行き詰まっている方がいるような気がします。

ドメインは公開中のブログに向いているので、インストールページにアクセスできない。だから移行できない。という事であれば、次の手順で移行できます。

運用中のドメインのままWordPressへ移行する手順

次の順番で移行します。

実行前にテスト用の新しいブログを作ってリハーサルしてください。やり方を確認、理解してから本サイトの移転をしてください。

  1. 一時的な仮ドメインを作る
  2. 仮ドメインサイトへWordPressをインストール
  3. そのWordPressへ公開中のブログデータをコピー
  4. データベース内のURLを書き替える
  5. DNSの設定でドメインがWordPressへ向くように変更
  6. ブログの移行完了

まず、使っていないサブドメインで一時的なアドレスを用意します。

たとえば、持っているドメインがexample.comなら、サブドメインでtemp.example.comなどのURLを作り、そのtemp.example.comにWordPressをインストールし、画像ファイルや内部リンクなどの調整をデータベースで行ないます。

データベースで設定と言っても、さほど難しい作業はありません。万が一失敗しても、DNSの設定を変えるまでは、公開中のブログに影響しないのでやり直せばいいだけです。

データの中のURLをtemp.example.comではなく、example.comにREPLACE(書き替え)した後、DNSの設定で、URLがそのWordPressに向くようにすれば、問題なく移行できます。

上級者向けに結論を書くと、このページで行うことは次の3点を実行するのと同等です。

MySQLでwp_optionsに登録してあるURLを変更
update wp_options
set option_value = replace(option_value, ‘temp_domain’, ‘origin_domain’);
MySQLで画像の内部リンクURLを変更
update wp_posts
set post_content = replace(post_content, ‘temp_domain’, ‘origin_domain’);
公開フォルダをリネーム
mv temp.example.com example.com

一時的な仮ドメインを作る

最初にやる事は、今使っていないサブドメインを追加して、そのドメインにアクセスできる状態にすることです。そして、そのドメインでWordPressを立ち上げます。すべての設定が終わったら、そのサブドメインは削除します。

たとえば、今公開しているブログが
http://example.com なら、

一時的に作るアクセス先を
http://temp.example.com などとします。

メインのドメインの設定はまだ変更せず、サブドメインtemp.example.comを追加で作り、移転先のサーバーに設置。DNSを設定して、その公開フォルダにアクセスできるようにします。

DNSの設定方法がわからない、あるいは怖くて出来ないというのであれば、次の方法もあります。大抵のレンタルサーバーは、サーバーが持っているドメインのサブドメインを貸してくれるはずです。

例えば、このブログを置いているバリューサーバーでは、valuesv.jp、vsw.jp、uvs.jp、xvs.jp、zvs.jpなどのドメインに好きなサブドメインをつけてサイトを公開できますし、ロリポップ!では104種類のドメインから選んでサブドメインの運用ができます。それを使って一時的なサイトを作ります。

一時アドレスにサーバー所有のドメインを使う場合は、契約しているレンタルサーバーの説明を読んで設定してください。

一時的なサイトにアクセスできるようになったら、そこへWordPressをインストールします。

この時、WordPressをインストールしたデータベースと公開フォルダは、そのまま移転後のブログでも運用する事になります。

ですから、公開フォルダ名を指定できる場合は、最終的に公開するブログ用の公開フォルダ名にしておきます。公開フォルダ名を指定できない場合は、そのままの公開フォルダ名で大丈夫です。

仮ドメインサイトへWordPressをインストール

仮ドメインのサイトにアクセスできるようになったら、そこにWordPressをインストールします。

具体的なWordPressのインストール方法は、次のページに書いています。それを参考にして実行してください。
無料ブログからWordPressへデータを移動する手順

公開しているブログが複数あって、それを移設したい場合は次も参考にしてください。
データベースが1つだけのサーバーでWordPressを複数設置する方法

仮設置したWordPressのデーターベースを、そのまま公開後のブログでも使います。ですから、複数のWordPressを同一データベースにインストールする場合は、テーブル接頭辞に公開後のブログ用の接頭辞をつけておきます。

WordPressへ公開中のブログデータをコピー

上のページの通りに実行すれば、現在公開中のブログデータをWordPressへコピーできます。

ただし、Seesaaやライブドアなどの無料ブログからWordPressへ移行する場合、画像データはコピーされません。またドメインは同じでも、ページごとのURLは変わってしまうかもしれません。それを避けるためには、次の方法を参考にしてください。

画像データをコピーするためには、次のプラグインを使ってください。
MT形式からWordPressへ移行した際に画像をインポートするプラグイン

「MT形式からWordPressへ移行した際に画像をインポートするプラグイン」を使うと、画像ファイルのURLが公開中のブログURL「example.com」から一時サイトのサブドメイン付きURL「temp.example.com」に自動で書き換えられますが、それで構いません。今は気にしないでください。WordPressの画像ファイル保存パスと、インポート前の画像ファイル保存パスは違うので書き換えは必要です。

ページごとのURLを変えずに維持するには次の方法を使ってください。
WordPress “Custom Permalinks”で引っ越したブログのURLを維持する

ここまでは、WordPressへの通常の移行方法と同じです。ルックスの変更をしたい場合は、テーマ(テンプレート)を変えるなどしてください。

仮サイトtemp.exampe.comで完璧にブログが表示できるようになったら、次へ進みます。

データベース内のURLを書き替える

ここまでで、独自ドメインを使って公開しているブログがWordPressへ移行されました。問題なのは、ドメインが違っていることだけです。後はドメインを書き換えれば、今公開中のブログとWordPressを置き換えられます。

ドメイン変更をするには、WordPressの管理ページの「設定 » 一般」を開きます。

項目の中に「WordPress アドレス (URL)」と「サイトアドレス (URL)」というのがあります。

アドレスの指定

この2つのURLが一時サイトのURLになっています。この2つの項目の中のドメインを、一時サイトのものから、移転するブログの本当のドメインに書き替えます。

アドレスを変更

書き換えたら、ページの下にある「変更を保存」ボタンを押します。そして、管理ページにアクセスできなくなったら成功です。

WordPressのURLはすべて、上の2つの設定に基づいて決められますので、設定変更前の管理ページのドメインは「temp.example.com」です。しかし「変更を保存」後の管理ページのドメインは「example.com」に変わります。

そのドメインは、まだ「WordPressではない移転前ブログ」に向いているので、管理ページのURL「http://example.com/wp-admin/options-general.php」は存在しないページです。

ですので、管理ページにアクセスできなくなったら成功です。データベース内のURLが変更されたので、DNSの設定をすれば、WordPress版のブログを見ることができます。

ただ、今のままだとWordPress版ブログの画像ファイルは一時サイトに向いたままです。一時サイトにはもうアクセスできないので、画像が表示されなくなります。

画像の内部リンクURLを修正

ブログの記事で画像を一切使っていないのであれば、この項目は必要ありません。移転前のブログURLとWordPressに移転後のブログURLは同じなので、内部リンクの修正は必要ありません。

ただ、「MT形式からWordPressへ移行した際に画像をインポートするプラグイン」を使って画像ファイルをインポートした場合は、インポート後のURLに自動で書き替えられるので、一時サイトのURLになっています。それを、正規の公開ブログ用URLに書き替えます。

そのためには、レンタルサーバーのphpMyAdminにログインします。ログインするとページ上部のメニューの中に「SQL」という項目があるので、その「SQL」のページを開きます。

phpMyAdmin

開いたページで次のように打ち込んで実行します。

テーブル接頭辞が wp_
一時サイトのドメインが temp.example.com で ブログ公開ドメインが example.com の場合

UPDATE wp_posts SET post_content = REPLACE(post_content, ‘temp\.example\.com’, ‘example\.com’);

このコマンドで、すべてのページのサブドメイン付き「temp.example.com」が、全て一括でサブドメインなし「example.com」に書き替えられます。

詳しい説明は「WordPress内の特定文字列をMySQLのREPLACEで一括置換する方法」に書いていますので、実行前にそれを読んで確認してください。

DNSの設定でドメインがWordPressへ向くように変更

これで、WordPressの中身は、現在公開しているブログの内容と同じになりました。あとは、DNSの設定でURLの飛び先をWordPressにするだけです。

それは、契約しているドメイン会社や、レンタルサーバーの管理ページによって違うので、自分の契約しているドメイン管理会社とレンタルサーバーのマニュアルを見て実行して下さい。

その際に注意するのはWordPressの公開フォルダの指定を間違えない事です。もしも、公開フォルダの名前が指定できない場合は、レンタルサーバーで公開ドメイン用のURL設定をした後で、作られた公開フォルダを削除して、WordPress一時サイト用の公開フォルダの名前を、削除したフォルダのものに書き替えます。

最後に、一時アクセス用のドメイン temp.example.com は不要なので、その設定を削除するのを忘れないでください。

DNSの設定が浸透するまで少し時間がかかりますが、成功していればWordPress版のブログが表示されるようになります。

ブログのログインURLは

http://ブログのドメイン/wp-login.php

です。ここからWordPressにログイン出来るようになります。ユーザー名もパスワードも一時サイトの時と同じです。

WordPress 同一DB内の別ブログ記事一覧表示ウィジェットプラグイン

ひとつのデータベースに複数のWordPressをインストールして、ブログをいくつか運営している時に、「別ブログの最新記事一覧」をサイドバーに表示するプラグインを作りました。

ひとつのデータベースにブログを複数入れるというケースは、そうそうないので需要も少ないと思いますが、ご自由にお使いください。ライセンスはGPL2で公開します。

ダウンロード:Recent Posts of Site in Same DB

サイドバーに表示

Recent Posts of Site in Same DB

英語がわからないので、ネイティブに通じる名前なのかはわかりませんが、WordPress標準の「最新の投稿」ウィジェットが「Recent Posts」なので、それに「Site in Same DB」を足してみました。「同じデータベースの中にあるサイト」という意味のつもりなんですが、英文として正しいのかわかりません。

Recent Posts of Site in Same DB

それでも一応、日本語、英語の2カ国語対応で作っています。日本語のブラウザで管理パネルの「ウィジェット」を開けば、入力項目が日本語で表示されると思います。英語版のブラウザで開けばブロークンな英語で表示されます。

ただし、同じデータベースの中にあっても、マルチサイト化してあるWordPressのデータは読みません。未対応です。同一DB上にマルチサイト化済のWordPressとマルチサイトではないWordPressが混在している場合、マルチサイトでないWordPressのデータだけが読み込めます。

ちなみに通常のWordPressはマルチサイト化されていません。

インストール方法

WordPress公式プラグインではないので、今見ているこのページからダウンロードしてください。.zipで圧縮してあります。

ダウンロード:Recent Posts of Site in Same DB

.zipを解凍すると「recent-posts-of-site-in-same-db」という名前のフォルダになります。中身は以下の通りです。

  • recent-posts-of-site-in-same-db.php (プラグイン本体)
  • recent-posts-of-site-in-same-db.css (ウィジェット用スタイルシート)
  • image/ (フォルダ)
    • w-logo-blue.png (WordPressのロゴ画像)
  • languages/ (フォルダ)
    • recent-posts-of-site-in-same-db-ja.po (日本語化ファイル)
    • recent-posts-of-site-in-same-db-ja.mo (日本語化ファイル)

解凍済の、この一式を「recent-posts-of-site-in-same-db」のフォルダに入れたまま、フォルダごと全部、FTPでサーバーにアップロードします。

アップロード先は、サーバーにインストールしたWordPressの

wp-content/plugins

の中です。wp-contentの中にpluginsというフォルダがあるので、その「plugins」の中にアップロードします。

結果として、配置先は「wp-content/plugins/recent-posts-of-site-in-same-db」になります。

アップロード先が間違っていなければ、WordPress管理ページにログインして「プラグイン => インストール済みプラグイン」の一覧の中に「Recent Posts of Site in Same DB」が、表示されています。

インストール済みプラグインに表示される

説明が「同一データベースにインストールしてある別サイトの記事一覧を表示します。」で、作者が「Tom」になっているのが、そうです。

プラグインの中に「Recent Posts of Site in Same DB」を見つけたら、「有効化」という文字をクリックします。

「有効化」という文字が「停止」に変われば、プラグインが使える状態になりました。

設定方法

プラグインが有効化されれば、管理ページの「外観 => ウィジェット」に「別ブログの最近の投稿」という項目が増えています。

ウィジェットの一覧

使い方は、他のプラグインと同じです。

別ブログの最近の投稿

他のプラグインと同じように、左側から「別ブログの最近の投稿」を右側の配置したい場所に運んで離します。

すると、設定を入力できるようになるので、設定します。

テーブル接頭辞

いちばん上の「テーブル接頭辞: (入力必須)」だけは必須項目です。これが入力されていない、あるいは間違えた内容が書きこまれていると、投稿一覧は表示されません。

テーブル接頭辞を入力

マルチサイトでない方法で、ひとつのデータベースに複数のWordPressをインストールするには「テーブル接頭辞」を変えないといけないので、インストールした時に「テーブル接頭辞」を変えているはずです。そのテーブル接頭辞を入力します。

phpMyAdmin

もし、テーブル接頭辞がわからなければ、phpMyAdminで確認できます。

WordPressを通常の状態でインストールすると、データベースに次の11個のテーブルが作られますが、この wp_ の部分が「テーブル接頭辞」です。

  • wp_commentmeta
  • wp_comments
  • wp_links
  • wp_options
  • wp_postmeta
  • wp_posts
  • wp_term_relationships
  • wp_term_taxonomy
  • wp_terms
  • wp_usermeta
  • wp_users

「テーブル接頭辞」が wp_ の3文字の場合なら、 wp_ と、その3文字を打ち込みます。

次のサンプルは example_ という「テーブル接頭辞」でインストールしたWordPressの「最近の投稿」を表示させるための設定です。

テーブル接頭辞を入力

接頭辞の設定だけを終えた時のブログの状態が次の図です。ちなみに、接頭辞が example_ のブログには「example」というタイトルをつけていて、ページは2ページだけあります。

テーブル接頭辞だけを設定して表示

ページタイトルの左に三角みたいな模様がありますが、これは使っているテーマ(テンプレート)がつけているものです。このページのサンプルでは、テーマに「Travelify」を使っています。

テーマを変えると、次のように表示が変わります。

Twenty Fifteenで表示Twenty Fifteenで表示
Twenty Fourteenで表示Twenty Fourteenで表示
Twenty Thirteenで表示Twenty Thirteenで表示

タイトル

タイトルという項目は、ウィジェットのヘッダに表示するタイトルです。上の例では「exampleの最近の投稿」になっている部分です。

タイトルの設定

ここに何も書き込まないと、接頭辞で読み込むブログのタイトルを調べ「◯◯◯の最近の投稿」と表示します。◯◯◯はブログのタイトルです。

それが嫌な場合はタイトル項目に書きこめば、書き込んだものがタイトルとして表示されます。

タイトルを変更タイトルを変更
変更したタイトルで表示変更したタイトルで表示される

表示する投稿数

最新のページからさかのぼって、表示する投稿数に書いた数字の分だけ一覧を表示します。ただし、指定の数字よりも公開しているページが少ない場合は、その分だけしか表示できません。このページの例では記事が2ページしかないブログを使っているので「表示する投稿数」が5でも、表示されるのは2ページです。

「表示する投稿数」は、半角で入力します。入力したのに反映されないという場合は全角で打ち込んでいないか確かめてください。全角で入力しても反映されません。

リンクを別窓で表示?

「リンクを別窓で表示?」に印をつけて保存すると aタグに target=”_blank” を追加します。印がない場合は、リンクをクリックすると、別の窓を開かずにリンク先に移動します。

投稿日を表示しますか ?

ブログの投稿日を表示したい場合は、ここに印をつけて保存します。

投稿日を表示しますか ?

日付の前で改行する?

ページタイトルと日付を別の行に分けたい場合は、ここに印をつけます。

ただし、テーマ(テンプレート)によっては、はじめからタイトルと日付を別行で表示しているものもあるので、その場合は印をつけてもつけなくても日付の前で改行されます。

日付の前で改行しない日付の前で改行しない
日付の前で改行する日付の前で改行する

サムネイルを表示する?

ページタイトルの左に画像を表示させたい場合は「サムネイルを表示する?」に印をつけます。

サムネイルを表示する?

「サムネイルを表示する?」だけに印をつけて、その他の設定をしない場合は「アイキャッチ画像」がある場合のみ、そのアイキャッチ画像を表示します。アイキャッチ画像の設定は記事を投稿するページの右下で行ないます。

アイキャッチ画像の設定

アイキャッチ画像があるページのタイトル脇には、その画像が表示され、アイキャッチ画像がないページの脇には画像のサイズ分だけ空白が出来ます。

アイキャッチ画像を表示

横幅

サムネイル画像を表示する横幅をピクセルで指定します。初期設定は45ピクセルにしています。横幅を指定すると、もとの縦横比率を守ったまま、高さを自動調節します。

この設定の数字の記入は半角でします。全角で入力しても反映しません。数字を打ち込んだのに反映されないという場合は、全角で入力していないか確かめてください。

正方形で表示?

横幅を指定すると、高さを自動で計算しますが、そうではなく正方形にしたい場合は「正方形で表示?」に印をつけます。

正方形にすると縦横の比率が狂いますが、縦長の画像ばかりが多いような時に必要なら設定してください。縦長の場合、高さだけを圧縮することになりますので、横幅が目立つようになります。知り合いの女性の写真が多い場合は使うのを控えたほうがよろしいかと存じます。

通常のサムネイル表示通常のサムネイル表示
サムネイルの正方形表示サムネイルの正方形表示

本文中から画像を抽出する?

「本文中から画像を抽出する?」に印をつけると、アイキャッチ画像が登録されていないページでは、本文中から画像を探して、いちばん最初に登場する画像を表示します。

アイキャッチ画像があるページでは、アイキャッチを表示するので、この設定は関係ありません。

また、アイキャッチ画像もなく、本文中にも画像がない場合は、空白を表示します。空白が嫌な場合は、この下の設定をしてください。

デフォルトのサムネイル

画像がないページで空白を表示させたくない場合は「デフォルトのサムネイル」を、http:// で始まるURLで登録します。

アイキャッチ画像がなくて、本文中にも画像がない場合、あるいは本文中から画像を抽出する設定をしていない場合に、空白のスペースではなく、登録したURLの画像を表示します。

画像がない時WordPressのロゴを表示?

この項目は「デフォルトのサムネイル」が設定してある場合は無視されます。

ここに印をつけると、「デフォルトのサムネイル」が設定されていない時に、「デフォルトのサムネイル」の代わりにWordPressのマークを表示します。

WordPressのロゴ

このロゴは、 wp-admin/images にある w-logo-blue.png と同じものです。

サイドバーに表示

生成されるHTMLとスタイルシート

プラグインで生成されるサイドバーのウィジェットには次のクラス名がつきます。

  • widget_recent_entries
  • recent_entries_other_site

widget_recent_entries」は、WordPress標準のウィジェット「最近の投稿」につくクラス名です。これを「Recent Posts of Site in Same DB」にもつけています。

recent_entries_other_site」は、「Recent Posts of Site in Same DB」独自のクラス名です。標準の「最近の投稿」と統一したい部分は、「widget_recent_entries」クラスに設定し、このウィジェットだけに適用させたいスタイルシートは「recent_entries_other_site」クラスに設定してください。

サムネイルを表示させない場合は、標準ウィジェットの「最近の投稿」と全く同じに表示されます。ただし、日付の前に改行をつける場合だけ、日付の前に <br /> が付きます。

テーマ「Preus」で表示。
テーマ「Preus」で表示

テーマ「RestImpo」で表示。
テーマ「RestImpo」で表示

サムネイル(アイキャッチ)を表示させる場合のHTMLは次のようになります。横幅と高さは直接埋め込んでいます。

<aside id="recent-posts-of-other-site-xx" class="widget widget_recent_entries recent_entries_other_site">
	<h3 class="widget-title">タイトル</h3>
	<ul>
		<!-- 画像がある場合 -->
		<li class="with_image">
			<a href="">
				<img src="" style="width:45px;height:auto;" />
			</a>
			<span>
				<a href="">ページタイトル</a>
				<br />
				<span class="post-date">日付</span>
			</span>
		</li>
		<!-- 画像がない場合の空白 -->
		<li class="with_image">
			<span style="margin-left:55px;">
				<a href="">ページタイトル</a>
				<br />
				<span class="post-date">日付</span>
			</span>
		</li>
	</ul>
</aside>

また、プラグインが読み込んでいるスタイルシートは次のとおりです。

.recent_entries_other_site ul {
	background-image: none !important;
}

.recent_entries_other_site li.with_image:before,
.recent_entries_other_site li.with_image:after {
	content: " " !important;
	height: 5px !important;
	display: block;
	visibility: visible;
}

.recent_entries_other_site li.with_image:after {
	clear: both;
}

.recent_entries_other_site li.with_image {
	display: inline;
	vertical-align: middle;
	background-image: none;
	margin-left: 0;
	padding-left: 0;
	line-height: 140% !important;
}

.recent_entries_other_site li.with_image img {
	float: left;
	margin-right: 10px;
}

.recent_entries_other_site li.with_image:last-child img {
	margin-bottom: 0;
}

.recent_entries_other_site li.with_image > span {
	display: block;
	overflow: hidden;
}

プラグインに添付されたスタイルシートを一切編集しないで、そのまま使った場合、サムネイル付きの表示は次のようになります。

テーマ「Preus」で表示。
テーマ「Preus」で表示

テーマ「RestImpo」で表示。
テーマ「RestImpo」で表示

たとえばページタイトルごとに下線をつけて区切りたいという時はスタイルシートに次の通り追加します。

.recent_entries_other_site li.with_image:after {
	border-bottom:1px solid #e3e3e3 !important;
}

改変したスタイルシートをテーマ「RestImpo」に適用。
改変したCSSをテーマ「RestImpo」に適用

スタイルシートを追加する場合、プラグインフォルダのCSSに直接追加しても大丈夫ではありますが、上書きすると消えてしまいます。間違えて消さないためには次のページを参考にして、独自のテンプレートフォルダを作り、その中のstyle.cssに書くことをお勧めします。

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

よくあるかもしれない質問

Q 私は同じデータベースにブログを4つインストールしています。4つのブログの最新記事を表示できますか?

A ウィジェットを4つ作って、それぞれのテーブル接頭辞を登録してください。ウィジェット毎にそのブログの最新の投稿一覧を表示できます。

Q 他のブログの一覧にはサムネイルが表示されますが、「このブログの最近の投稿」には画像がつきません。統一して「このブログの最近の投稿」にもサムネイルを表示したいです。

A WordPressにはじめから入っている「最近の投稿」ではサムネイルは表示できません。代わりにこのページからダウンロードしたプラグインを使って、「このブログ」のテーブル接頭辞を登録してください。プラグインを設置している「今のブログ」の最近の投稿も表示できます。

WordPressプラグイン「Jetpack」の購読メール解除方法

コメントを頂いた方から問い合わせを受けました。

コメントしたらメールが来たので確認ボタンを押したんだけど、英語のページが開きました。英語読めないので、どうしたらいいのか教えてくださいという内容です。

Jetpack 購読設定

そもそも、何でメールが届いたのかというと、wordpress.comが出しているプラグイン「Jetpack」の購読設定が理由です。

Jetpack 購読設定

これを有効にするとコメントフォームに項目が追加されます。

Jetpack 購読設定

初期設定ではチェックはついていませんが、「新しいコメントがついたらメールで通知。」にチェックを入れてコメントを送信すると、そのページにコメントが追加された時、お知らせメールが届きます。また「新しい投稿をメールで受け取る」に印をつけると、新しいページ(記事)が公開された時にお知らせメールが届きます。

コメントいただいた方は、返信があったら知りたいと思って「新しいコメントがついたらメールで通知。」にチェックを入れて下さったようです。

そうすると、コメント送信とほぼ同時に

[購読] Big Bang のコメント – 承認してください

というタイトルのメールが届きます

Jetpack 購読設定

メールアドレスの打ち間違いや、いたずらでメアドを入力して、関係ない人にメールが届いた場合は、そのまま無視すれば、それ以降メールは送信されません。

「フォローを確認」ボタンを押すと、次のページが開きます。

Jetpack 購読設定

オレンジ色の所に

Your subscription has been activated!

と書かれているんですが、この時点でフォローが有効になります。

それ以降は、そのページにコメントが付くとメールが届きます。

Jetpack 購読設定

新しいコメントの全文がメールで届き、「返信」ボタンでそのコメントの返信フォームを開けます。

Jetpack 購読設定

購読メールの解除方法

解除するには、メールのいちばん下にある

メール配信頻度の変更: フォローアップコメントの配信をすべて停止するか、購読設定を編集できます。

を押します。

すると次のページが開きます。

Jetpack 購読設定

「I don’t want any more emails!」と書かれた下の「Stop All Emails」を押すとメール配信を終了します。

また「Yes, I want to delete my subscription」と書かれた下の「Confirm Deletion」を押すと、メールアカウントの登録自体を削除します。同じメールアドレスで複数のブログをフォローしている時にこれを押すとすべての設定が破棄されます。

「Stop All Emails」ボタンを押すと次のページが開きますが、設定を解除したという趣旨の

Your email address has been blocked from receiving further subscription emails – come back soon!

と書かれています。これでメールは来なくなります。

Jetpack 購読設定

WordPress内の特定文字列をMySQLのREPLACEで一括置換する方法

WordPressで、例えば移転したブログのURLなど、あっちこっちのページに散在している特定の文字列をすべて、いっぺんに書き替えたい(一括置換したい)という場合の方法です。

MySQLのREPLACEコマンドを使います。

REPLACE(対象となる文字列, '変更前の文字列', '変更後の文字列');

参考URL:MySQL :: MySQL 5.7 Reference Manual :: 13.2.8 REPLACE Syntax

記事本文内の置換

ページ本文の中の次のような状態のHTMLで、example.comを、newurl.net に変更したいとします。

URLは<a href="http://example.com/">http://example.com/</a>です。

<a>タグのhrefも含めてすべて一括置換するには

UPDATE wp_posts SET post_content = REPLACE(post_content, 'example\.com', 'newurl\.net');

とします。これだけで、すべてのページのURLを一瞬ですべて変更出来ます。注意点は3つです。

ドット . の前には\をつける。
この時、 . ドットは \ でエスケープしますが、わからなければそのまま、example.comでも大抵は問題ありません。(バックスラッシュの \ はキーボードひらがなの「ろ」にありますが、「Back Space」キーの左の円通貨記号を押しても同じです。というか、文字コードが同じなのでどちらを押しても円記号になってしまう)

この時の . ドットは、バックスラッシュ \ がない場合は何か一文字という意味で、comの前やnetの前の何か一文字を意味します。なので example.com ではなく example1comやexampledcomなどという文字列が偶然あれば、それもnewurl.netに変換してしまいます。

置換前文字列と置換後文字列は ‘ シングルクォートで囲む。
シングルクォート ‘ ではなく、ダブルクォート ” でもいいのですが、HTMLのタグの中にダブルクォートがたくさんあるので、シングルクォートの方が混乱しないかと思い、シングルクォートでと書いています。

上記の例の場合囲むのは ‘example\.com’ と ‘newurl\.net’ の2つです。

テーブル接頭辞の確認

phpMyAdmin

また、wp_postsはテーブルの名前ですが、「データベースが1つだけのサーバーでWordPressを複数設置する方法」のような理由で、テーブル接頭辞をつけている場合には、それに合わせます。どんな接頭辞をつけたかは、phpMyAdminの左側を探せばわかります。

phpMyAdminを使う場合、具体的には、下の図の赤枠にある「SQL」をクリックして、開いたページの入力欄に打ち込むか貼り付けます。

phpMyAdmin

入力欄の右下にある「実行」ボタンを押して、問題がなければ「何行変更しました」と表示されて完了です。

phpMyAdmin

コメント欄の文字列一括置換

コメント本文の特定文字列を置換するには次のようにします。

UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'hoge\.com', 'fuga\.net');

Before
コメント置換

After
コメント置換

また、コメント本文ではなく、コメント送信者のURLを変更するには次のようにします。コメント本文では対象カラムがcomment_contentでしたが、送信者URLの場合は comment_author_url になります。

UPDATE wp_comments SET comment_author_url = REPLACE(comment_author_url, 'hoge\.com', 'fuga\.net');

通常、投稿者URLは個別ページのURLではなく、トップページのURLで固定です。その場合、次のやり方の方が正統派ですが、この例ではどちらでも同じ結果になります。SQLを知らない場合は、上の例でやってください。

UPDATE wp_comments SET comment_author_url = 'http://fuga.net/' WHERE comment_author_url = 'http://hoge.com/';

置換(置き換え)ではなく、特定文字列を削除したい

hoge.comをすべて削除するなら、最後の「置換後文字列」のシングルクォート(ダブルクォートでもよい)の中に何も入れず空にします。

コメント中のhoge.comをすべて削除する場合

UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'hoge\.com', '');

データベースが1つだけのサーバーでWordPressを複数設置する方法

WordPressはデータベースにMySQLを使っているので、基本的に1つのWordPressを設置するごとにMySQLがひとつ必要になります。

お断り:このブログはMySQLが無制限に使えるバリューサーバーのスタンダードプランを使っています。ロリポップではありません。

たとえば、ロリポップ!のロリポプランは格安でドメインを50個まで使えますが、MySQLが1個しか使えません。では、ドメインがたくさん使えるのにブログはひとつしか作れないのかというとそうではなく、データベースのMySQLが1個しか使えなくてもWordPressを複数設置する方法はあります。

ひとつはマルチサイトにしてしまうことです。WordPressのインストール後にもマルチサイトへの設定変更はできます。ただし、マルチサイトではベースとなるドメインはひとつしか使えません。

マルチサイトの構成例

サブディレクトリ方式
  • http://example.com/山本のブログ/ <- ここで1ブログ
  • http://example.com/田中のブログ/ <- ここで1ブログ
サブドメイン方式
  • http://山本.example.com<- これで1ブログ
  • http://田中.example.com<- これで1ブログ

この例の場合、サブディレクトリ方式にせよ、サブドメイン方式にせよ、使えるドメインはexample.comのひとつだけです。

そうではなく、完全に別ドメインの hoge.comfuga.net の2つのWordPressサイトをひとつのデータベースで作るには、wp-config.php の $table_prefix を変更すれば出来ます。また、そのやり方で上のマルチサイトと同じ構成にも出来ます。

このページでは、マルチサイトの設定方法は説明しませんが、複数のWordPressをひとつのデータベースで設置する方法をロリポップを例にして書きます。

完全な別ドメインのWordPressサイトをひとつのデータベースで作る

wp-config.php の $table_prefix を変更してインストールするには、ロリポップの「簡単インストール」は使えません。

手動でWordPressをインストールする必要がありますが、そのやり方はロリポップ公式サイトのマニュアル「WordPress(ワードプレス)の設置」に書いてあります。

基本は上記ページの手順にしたがって、手動でインストールすればいいだけです。この時に wp-config.php の $table_prefix を変更します。

追記:
ロリポップの「簡単インストール」マニュアルに「WordPress(ワードプレス)複数インストール」というページが増えています。マニュアルページには「テーブル接頭辞」の設定をする項目がないのですが、自動で「テーブル接頭辞」を変えてくれるのであれば、ひとつのデータベースでも複数インストール出来ると思います。もし、できないのであれば今ご覧のこのページの通りにすればできます。

ロリポップを例にした複数ブログインストール方法

以下、ロリポップのマニュアルが古い部分と追加する手順だけをピックアップして書きます。

データベース作成
これは、ロリポップのマニュアル通りに行ないます。
アーカイブの入手
これも、ロリポップのマニュアル通りですが、2015年5月5日時点のWordPress最新バージョンは4.2.1です。
ファイルのアップロード
これも、ロリポップのマニュアル通りに行ないますが、アクセスして欲しいページが http://example.com/wordpress/ ではなく http://example.com/ であるなら wordpressという名前のフォルダは作らないでいいです。

wordpressというフォルダを作らないので、アップロード先は /wordpress ではなく / (スラッシュのみ)になります。

ただ、トップディレクトリに色々たくさん置きたくないという場合は、/wordpress など(名前は何でもいい)のディレクトリを作ってそこにまとめ、アクセスだけ http://example.com/wordpress/ ではなく、 http://example.com/ にする設定方法もあり、このブログはそうしています。その方法は、次のページを参考にしてください。

WordPress を専用ディレクトリに配置する – WordPress Codex 日本語版

インストール
インストールを次の通りに実行します。

Webブラウザで、自分のWordPressを設置したURLを開きます。
/ (スラッシュのみ)にアップロードしたなら http://example.com/ などの自分が公開するURLです。

するとブラウザで次のページが開きます。

WordPressのインストール画面

一番下の「さあ、始めましょう!」をクリック。

切り替わった次のページで、上記4つには自分が作成したデータベースの情報を入力します。

WordPressのインストール画面

そして最後の「テーブル接頭辞」をブログごとに書き替えます。

これは重複しなければ何でもいいのですが、たとえば http://hoge.com/ と http://fuga.net/ の2つのWordPressサイトを作りたいなら、 http://hoge.com/ の「テーブル接頭辞」を「hoge_」、 http://fuga.net/ の「テーブル接頭辞」を「fuga_」などとします。

データベース情報とテーブル接頭辞を入力したら、「送信」をクリック。

問題がなければ次の画面に変わります。

WordPressのインストール画面

「インストール実行」をクリック。

WordPressのインストール画面

「必要情報」を入力します。

この時のパスワードはデータベースのパスワードとは違う、WordPressにログインするためのパスワードを新たに作ります。パスワードを作る際はなるべく強力なものにします。

参考:gmailのパスワードは記号も使って複雑にした方がいいと思う話。WordPressもね

すべて入力が終わったら「WordPressをインストール」をクリック。

成功すれば次の画面に変わります。後は「ログイン」を押せばWordPressにログイン出来ます。

WordPressのインストール成功

その後、インストールしたファイルの「パーミッション変更」を忘れずに実行します。ロリポップの場合は次のとおりです。

./wp-config.php → 400
./wp-admin/install.php → 000

これでWordPressをひとつインストール出来ました。2つ目以降のインストールの際は、すでに済んでいる「データベース作成」と「アーカイブの入手」を飛ばし、「ファイルのアップロード」から始めます。そして「テーブル接頭辞」を違うものにしてインストールします。

インストールしたWordPressに、他のブログからデータをインポートする場合は、次のページを参考にしてください。

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

ちなみにですが、「テーブル接頭辞」を「hoge_」 と「fuga_」にして2つのWordPressをインストールした場合、MySQLの中では次のように、それぞれのブログ用に接頭辞で区別されたテーブルが作成されます。

mysql> show tables;
+-------------------------+
| Tables_in_wordpress     |
+-------------------------+
| fuga_commentmeta        |
| fuga_comments           |
| fuga_links              |
| fuga_options            |
| fuga_postmeta           |
| fuga_posts              |
| fuga_term_relationships |
| fuga_term_taxonomy      |
| fuga_terms              |
| fuga_usermeta           |
| fuga_users              |
| hoge_commentmeta        |
| hoge_comments           |
| hoge_links              |
| hoge_options            |
| hoge_postmeta           |
| hoge_posts              |
| hoge_term_relationships |
| hoge_term_taxonomy      |
| hoge_terms              |
| hoge_usermeta           |
| hoge_users              |
+-------------------------+
22 rows in set (0.00 sec)

参考:
wp-config.php の編集 – WordPress Codex 日本語版内の「$table_prefix : データベース・テーブル名の接頭辞

WordPress “Custom Permalinks”で引っ越したブログの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は変更前に戻ってしまうので注意してください。

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

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へ移行した際に画像をインポートするプラグイン

無料ブログから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へ移行した際に画像をインポートするプラグインのページヘ移動する。