follow us in feedly

WordPress

WordPress Importerでインポートできないときの対応方法

WordPress Importerというプラグインで記事やカテゴリなどを
インポートできないときの対応方法をご紹介します。

一昨日、インポートできないから記事戻すのやーめたとか言ってたやつの対応です。

どんな状態になっていたかと言うと、XMLファイルを選んで実行すると、
画面には「WordPress Importer」という文字だけ。
それ以外は何も表示されませんでした。

で、ログを見てみると、こんなエラーが出ていました。

途中を省略しています。

"PHP message: PHP Fatal error:  Class 'DOMDocument' not found in ... parsers.php on line 61"

調べると対応方法は、下記の2つでした。

  • php-xmlをインストールする。
  • WordPress Importerのソースコード(parsers.php)を変更する。

php-xmlのインストールはコマンドを打つだけ。

sudo yum install php-xml

しかし、これではインポートができるようになりませんでした。
そこからさらに調べて見つけたのが2つ目の方法です。
「/var/www/…/wp-content/plugin/wordpress-importer/parsers.php」の15行目を修正します。

修正前:
if ( extension_loaded( 'simplexml' ) ) {

修正後:
if ( false && extension_loaded( 'simplexml' ) ) {

これでインポートできるようになるはずです。
2つ目の対応だけで直るのかはよくわかりませんが、
特に手間でもないので、2つともやればいいんではないでしょうか。

参考サイト

WordPressでインポートが途中で失敗した場合の対処 – No Web Service No Life

WordPressがbrタグやpタグを自動挿入・削除するのを解除する

WordPressにはbrタグやpタグを自動挿入してくれる機能があります。
さらに、余分なbrタグやpタグを削除してくれる機能もあります。
この機能によってbrタグを重ねて大きめに行間をあけようとしても削除してしまいます。

WordPressの自動整形機能は、remove_filterをfunction.phpに追記すれば解除できます。
ただ、解除するとこれまでに投稿した記事にタグが自動挿入されないのでレイアウトが崩れる。

そういうわけで、今回はPS Disable Auto Formattingプラグインを使ってみました。
PS Disable Auto Formattingプラグインには過去記事の一括整形処理機能があるからです。

PS Disable Auto Formattingの設定

インストールは、管理画面から自動インストールするか下記サイトからダウンロードして
wp-content/pluginに置きます。
WordPress › PS Disable Auto Formatting « WordPress Plugins

「記事内容の自動整形」の停止にチェックして保存すれば完了ですが、
これだけだとremove_filterで停止したときと同じで過去記事のレイアウトは崩れます。

ps_disable_auto_formatting1

過去記事の一括整形処理をする

PS Disable Auto Formattingは過去記事の一括整形処理ができます。
過去記事の下書きにbrタグやpタグを追記することでレイアウト崩れを防ぎます。
「一括整形処理を許可」にチェックして一括整形処理ボタンをクリックすればOKです。

一括整形処理とCodeColorerによって問題が発生

いい感じに整形されたなあと確認していたら、おかしなことになってる箇所を発見。
このブログでは、CodeColorerプラグインを使ってソースコードをハイライト表示しています。
そのためcodeタグで囲っているソースコード部分に自動挿入されたbrタグやpタグが
CodeColorerによって記事にそのまま表示されるという事態に。

# こういうのが…
<?php
  echo 'hello!';
?>

# こうなった
<?php<br />
  echo 'hello!';<br />
?><br />

バックアップから復元しようか迷ったけど、WordPressの自動整形解除はしておきたかったので
ソースコード部分のbrタグやpタグを1記事ずつ削除して巡りました。
多少のトラブルはあったけどWordPressの自動整形機能を解除できました。

WordPressで画像を挿入するときにサイズが選択できない場合の対応

WordPressでの画像サイズ選択

最近、ブログに画像を入れるようになって初めて気づきました。
参考にしてるWordPress本などでは画像サイズが選択できるよとなっているわけですが、
実際に画像を挿入しようと思ったらフルサイズしか選べませんでした。

調べてみると、PHPのGDモジュールが必要ということでインストールしました。
サーバ環境はこんな感じです。
CentOS 6.2
PHP 5.3.3
Nginx + FastCGI

GDモジュールをインストールする

GDモジュールをyumでインストールします。

$ sudo yum install php-gd

インストールが完了したらFastCGIを再起動します。
FastCGIの設定や起動スクリプトについてはこちらを参照。

$ sudo /etc/init.d/php-fastcgi restart

設定ファイルはインストール時に作成されると思います。
作成された/etc/php.d/gd.iniの中身はこれだけ。

; Enable gd extension module
extension=gd.so

確認して「gd」が表示されていれば完了です。

$ php -m
[PHP Modules]

gd

これまでアップロードした画像のサイズは選択できないので、
そのままにするか再アップロードするかになります。

WordPressがヘッダに出力する情報をremove_actionで削除する

WordPressはヘッダ(headタグ内)にいろいろな情報を自動で書きだしています。
便利ではあるけど、なかには必要ない情報も含まれていてヘッダがゴチャつきます。
function.phpに設定することで簡単に削除できるので一部ですが紹介します。

下記はこのブログでおこなっている設定です。

remove_action('wp_head', 'wp_generator');
remove_action('wp_head', 'feed_links_extra', 3);
remove_action('wp_head', 'wp_shortlink_wp_head', 10, 0);
remove_action('wp_head', 'rsd_link');
remove_action('wp_head', 'wlwmanifest_link');

wp_generator

WordPressのバージョン情報です。
削除することでセキュリティ向上になるとかならないとか。
headをすっきりさせたいかどうかで削除していいと思います。

feed_links_extra

カテゴリーや投稿などのRSSフィードです。
サイト全体とコメントのRSSフィードを削除する場合は下記のようにします。

remove_action('wp_head', 'feed_links',);

サイト全体のRSSフィードのみ出力したい場合は、まずfunction.phpを編集します。

# 削除する
add_theme_support( 'automatic-feed-links' );

# 追加する
remove_action('wp_head', 'feed_links_extra', 3);

次にheader.phpのheadタグ内に下記を追加します。

<link rel="alternate" type="application/rss+xml" title="77 Dogs Blog" href="<?php bloginfo('rss2_url'); ?>" />

wp_shortlink_wp_head

shortlinkは下記のような短縮URLです。

<link rel="shortlink" href="http://www.example.com/?p=77">

rsd_link

投稿ツールなどを使ってリモート投稿をする場合は必要になります。
RSD(Really Simple Discovery)は外部アプリケーションの情報を取得するためのプロトコルです。

wlwmanifest_link

WLW(Windows Live Writer)を使って記事を投稿する場合は必要となります。

以上です。

WordPressプラグイン Head Cleanerを導入したので設定について簡単に解説する

WordPressプラグインのHead Cleanerをインストールしてみました。
Head Cleanerは、CSS/JavaScriptの最適化や<head>の中身を整理してくれます。
設定によってはサーバへのリクエスト回数や送信データ量を減らすことで表示を高速化できます。

Head Cleanerの設定項目

Head Cleanerの設定について簡単に説明します。
下の画像はこのブログで設定している項目です。

Head Cleanerの設定

設定はプラグインやテーマによってはレイアウトが崩れるのでとりあえず試すしかないです。
Head Cleanerの設定はWordPressにログインした状態だと反映されないので、
表示の確認をするときはログアウトするか別のブラウザを起動する必要があります。

また、レイアウトが崩れた場合はチェックを外してからキャッシュを削除する必要があります。
設定画面にある「キャッシュファイル削除」からできます。

CSS と JavaScript を、サーバ上にキャッシュする

CSSとJavaScriptのキャッシュを生成し、以降の読み込みはキャッシュを利用します。
キャッシュは/wp-content/cache/head-cleanerに生成されます。
レイアウトにも特に影響することなく高速化ができるのでチェックします。

この設定をチェックすると、CSSとJavaScriptのキャッシュについての設定が追加されます。

CSS, JS を動的生成する

Head Cleanerが生成したCSSとJavaScriptのキャッシュに有効期限を設定し、
gzip圧縮することでファイルサイズを減らします。

CSS に適用するデフォルト media 属性

media属性はCSSを適用するときに、その対象となるメディアを設定するものです。
レイアウトが崩れるということがなければ、この項目はデフォルトのままでよいと思います。

複数の CSS を結合する

CSSファイルが複数あると、読み込み時にサーバとの通信回数が増えるので時間がかかります。
ひとつのCSSにまとめることでリクエスト回数を減らして高速化します。

CSS を最適化する

CSSファイルから不要な空白や改行、コメントなどを削って容量を小さくします。

CSS に含まれる画像の URL を、データスキーマ URI に変換する

データスキーマURIは、画像データをBase64エンコードしてHTMLに埋め込むことで
リクエスト回数を減らすことができるというものです。
つまり、画像データがすでにHTML内にあるんでサーバからもらう必要がないね、
となるのでリクエスト数が少なくなって高速化できるのです。

詳しくはこちらを参考にしてください。
サイトの表示スピードを改善!dataスキームURIを使った画像の埋め込み/ – サイブリッジラボ

複数の JavaScript を結合する

JavaScriptファイルが複数あると、読み込み時にサーバとの通信回数が増えるので時間がかかります。
ひとつのファイルにまとめることでリクエスト回数を減らして高速化します。
「複数の CSS を結合する」とほぼ同じです。

JavaScript を小さくする

JavaScriptファイルから不要な空白や改行、コメントなどを削って容量を小さくします。
「CSS を最適化する」とほぼ同じです。

フッタ領域の JavaScript も対象にする

フッターにあるJavaScriptをHead Cleanerの対象にするかという設定です。
プラグインによってはフッターにJavaScriptを書いてるようです。

JavaScript を、フッタ領域に移動

Webページの読み込みはHTMLソースの上から順に読み込んでいくので、
JavaScriptがCSSより先にあるとJavaScriptの読み込みが完了するまで
レイアウト表示が始まらないということもなります。

JavaScriptを最後に読み込むことでレイアウト表示がすぐに開始されるようになります。
データ転送量は変わりませんが、表示開始までの時間短縮の分だけ体感的に速くなります。

Google Ajax Libraries を利用する

jQueryなどのライブラリをGoogle Ajax Librariesから参照して使用します。

XML宣言を付与

HTMLの先頭にXML宣言を付与してくれます。
HTML5で宣言している、XML宣言をすでに書いているのであれば必要ないです。
チェックをしてもすでに宣言している場合は自分で書いたほうを優先してくれるようです。

メタタグ “canonical” を追加

メタタグ canonicalを追加する設定です。
このタグによって、ページ内容が重複しておりURLが異なっている複数ページのなかで
最も優先するページはどれであるかを検索エンジンに通知することができます。

詳しくはこちらを参考にしてください。
rel=”canonical” 属性について – ウェブマスター ツール ヘルプ

OGP(Open Graph Protocol) 対応のメタタグを追加

Facebookなどで使われているOGPのメタタグを追加してくれます。
これは自分で設定しているのでチェックしていません。

メタタグ “generator” を削除

WordPressのバージョン情報を出力するタグです。
特に必要ないタグですので削除してもよいと思います。

自分で削除するという場合は、下記を参考にしてください。
WordPressがヘッダに出力する情報をremove_actionで削除する | 77 Dogs Blog

リンクタグ “RSD” を削除

外部アプリケーションを使ってリモート投稿する場合に必要となる情報のタグです。
WordPressの管理画面上で更新するのであれば不要です。

リンクタグ “wlwmanifest” を削除

wlw(Windows Live Writer)を使って更新する場合に必要となる情報のタグです。
リンクタグ “RSD” と同様にWordPressの管理画面上で更新するのであれば不要です。

IEコンディショナルタグを削除

特定のIEバージョンにのみスタイルシートを適用するためのコメントタグです。
IE(Internet Explorer)での表示は気にしないということなら削除します。

メタタグ “Last Modified” を追加

最終更新日を示すメタタグです。
更新日を考慮している検索エンジンに効果があるかもしれないです。
特に必要ないかなと思ったのでチェックしていません。

“パラノイアモード” を有効にする

HTMLソースから無駄を省き、できるだけサイズを小さくしようとします。
下記のようにGoogle Adsenseの影響からかサイドバーがまるっと消えたので使っていません。
Adsense表示で気をつけるHead Cleanerのたったひとつの設定 | [M] mbdb

設定については以上です。
レイアウト崩れの場合はキャッシュの削除を忘れないように注意してください。
私のように焦って無駄な時間を使うことになります。