WordPress – Download ePub プラグイン

Pocket

WordPressのエントリをePubに変換し、ダウンロードできるようにするプラグインを作成しました。

ダウンロード:Download ePub プラグイン( download-epub.zip )

システム要件

圧縮にPEARのFile/Archive.phpを利用しているため、同パッケージを使える必要があります。

設置方法

サーバ側の設定

  1. Download ePubプラグインのフォルダをサーバのpluginフォルダにアップロードします。
  2. プラグインのフォルダ内にあるskeleton/OEBPSフォルダの属性を777にします。
  3. wp-content/uploads内にepubというフォルダを作成し、属性を777にしてください。
  4. wp-content/uploads/epubフォルダに以下を記した .htaccess を置きます(MIMEタイプの設定です)。
  5. AddHandler application/epub+zip .epub
    AddType application/epub+zip .epub
  6. ePubにフォントを同梱したい場合は、download-epub/skeleton/OEBPS/fontsにフォントをアップロードし、download-epub/skeleton/OEBPS/style.cssを適宜編集します。

WordPressの設定

ダウンロード用のリンクを挿入する場所を決めて下さい。たとえば利用しているテーマのsingle.phpを開き、適当な位置に

< ?php if(isset($ePub)) $ePub->ePublisher(); ?>

を挿入します。このタグはページが表示される際に

<div class="epub"><a href="%s" target="_blank">Download ePub</a></div>

というePubをダウンロードするためのリンクに変換されます(このリンクは任意の形式に変更できます。下記「設定項目」を参照して下さい)。

設定項目

download-epub.phpの32行目から37行目までが設定項目です。

$this->ePub_dir → 作成したePubファイルを保存するディレクトリ
$this->ePub_url → ePubが保存してあるフォルダのURL
$this->ePub_author → ePubの作者
$this->ePub_publisher → ePubの出版者
$this->ePub_language → ePubで使用している言語
$this->ePub_anchor_template → ePubダウンロード用アンカータグのテンプレート

32行のディレクトリは、デフォルトの「get_option(‘upload_path’) . “/epub”;」から変更する必要はありません。33行のURLは32行のディレクトリと等価ですが、「メディア」の設定で「アップロードするファイルの保存場所」を変更している場合、デフォルトの「get_option(‘siteurl’) . ‘/wp-content/uploads/epub/’;」では正しく動作しません。設定に応じて適宜修正して下さい。

アンカータグのテンプレートは、初期状態では
<div class=”epub”><a href=”%s” target=”_blank”>Download ePub</a></div>
となっています。「href=”%s”」以外の部分は変更可能ですので、お好きなように編集して下さい。

設置例

当サイトでは、使用しているテーマのsingle.phpを編集し、

<h1>< ?php the_title(); ?></h1>

となっていたところを、

<h1>< ?php the_title(); ?>< ?php if(isset($ePub)) $ePub->ePublisher(); ?></h1>

とし、ダウンロード用のリンクを挿入しています。リンクは

<div class="epub"><a href="hogehoge.epub" target="_blank">Download ePub</a></div>

の形式で挿入されるため、テーマのcssには次のクラスを追加しています。

.epub {
	float: right;
	background-image: url("../images/epub.png");
	background-repeat: no-repeat;
	background-position: center left;
	margin:0 15px 0 15px;
	padding-left:20px;
	font-size: 11px;
	font-weight: normal;
}

各エントリのタイトルの横にePubをダウンロードするためのリンクが本のアイコンとともに表示されていると思います。その見栄えを定義しているのが上のePubクラスです。*1

次にフォントについてですが、日本語のフォントとしてIPAモナーP明朝(ipamp-mona.ttf)、中国語のフォントとして文鼎(Arphic)の簡体字宋体フォント(gbsn00lp.ttf)をプラグインのフォルダの plugins/download-epub/skeleton/OEBPS/fonts に加えています。

このフォントを使うため、plugins/download-epub/skeleton/OEBPS/style.css には次のような定義を加えています。

@font-face {
  font-family: "ipampmona", serif;
  src: url(fonts/ipamp-mona.ttf);
}
@font-face {
  font-family: "AR PL SungtiL GB", serif;
  src: url(fonts/gbsn00lp.ttf);
}
body {
  font-family: "ipampmona", serif;
  margin: 3%;
}
p {
  line-height: 150%;
  font-family: "ipampmona", serif;
  text-indent: 1em;
}
.cn {
  font-family :"AR PL SungtiL GB", SimSun, STSong, STKaiti, serif;
}

このプラグインの仕様および注意事項

このプラグインは、ページが表示される際にそのエントリに対応するePubファイルが存在するか否かをまずチェックします。もしまだ作成されていなければ、タイトルや本文を取り出してePubに変換し、wp-content/uploads/epub のフォルダに保存します。その後、ブログ内の指定された位置にアンカータグを挿入します。

Download ePubタグの挿入場所はsingle.phpをおすすめします。ePubファイルを作成する処理は、それほど重いものではありませんが、作成する数が多いとそれなりに時間がかかるため、index.phpなどに設置すると表示されるエントリの数だけePub作成処理が実行されます。作成処理が実行されるのはePubが存在しない1回目だけですがご注意下さい。

ePubのファイル名は、エントリのID+更新日時のタイムスタンプで構成されています。このことから予想がつくと思いますが、エントリの更新を行うと、ePubファイルもあらためて作成されますので、細かい修正を繰り返すとePubの保存フォルに同じようなファイルがたくさんできます。

バージョン0.1現在、圧縮まわりに不具合が残っています。今後修正する予定ですが使用する際はご注意下さい。

  1. 現在プラグイン停止中です。 []

1件のコメント

コメントを残す

メールアドレスが公開されることはありません。