WEB/システム/IT技術ブログ

PHPをベースにしたWebシステム上では扱えるファイルサイズに制限があります。
ファイルサイズの制限をなくして、無制限にファイルをアップロードを許可するとメモリエラーなどに障害が発生するためです。
だからといって制限をきつくすると都合が悪い場合があります。

例えば、phpMyAdminでデータをインポート、エクスポートする場合、SQLの書かれたテキストファイルをアップロードすることがあるのですが、ファイル容量の制限エラーのためデータを移せない問題があります。

また、WordPressで高解像度のフォトギャラリーなどを構築する場合、画像ファイルの容量制限のため、ファイルをアップロードできない場合があります。

これらの解決策として、PHPの設定を変更して制限を緩和します。

WordPressのテーマはさまざまなテンプレートで構成されており、そのファイル名には一定のルールがあります。
例えば、「header.php」は関数「get_header()」、「sidebar.php」は関数「get_sidebar()」を実行すると読み込みます。

では、自作のテンプレートを読み込む場合ですが、例えば「original.php」というテンプレートを作成したら、関数「get_template_part」を使用して以下のようにして組み込むことができます。

get_template_part('original');

WordPressで投稿した記事をRSSフィードで配信することができます。
例えばこのブログだと以下のリンクからフィードを取得することができます。
https://helog.jp/feed/

このフィードのテンプレートを修正しようと思ったのですが、なんとWordpressはデフォルトでフィードのテンプレートが存在しません。

例えばRSS2をフォーマットを編集する場合、直接インクルードファイルを編集すればカスタマイズは可能のようです。

.../wp-include/feed-rss2.php

しかし、アップデートの際の影響も考慮して、ここではなるべくテンプレート内でカスタマイズを完結したいので、以下のサイトを参考にフィードをテンプレート化します。

長いことブログを運用していると、これまでに投稿した全ての記事に一括置換をかけたいという場面に遭遇することがあります。

例えば、デザイン・構造の変更に伴い記事内に記述した「h2」タグを「h3」に置換したい。

<h2>サブタイトル</h2>
<h3>サブタイトル</h3>

また、html5化に伴いclass指定していた箇所を、新タグに置換したい。

<div class="section">
・・・
</div>
<section>
・・・
</section>

初めは、WordpressのDBを直接書き換えようと考えSQLを書いてみたのですが、なかなか複雑で、簡単にはできそうにありません。

WordPressで固定ページを作成した場合、「page.php」というテンプレートファイルが読み込まれ、ページが生成されます。
但し、サイトを運営する上で「このページだけレイアウトを変えたい」といった要望もでてきます。
WordPressではそのようなときにオリジナルテンプレートを作成できるしくみが用意されています。

方法は簡単です。

例えば、オリジナルテンプレートファイル「page-original.php」を新規作成します。
「original」の部分は任意です。ソースの中身はデフォルトの固定ページテンプレート「page.php」をベースとすると開発作業が楽でしょう。

「page-original.php」を開き、以下のようにコメントでテンプレート名を記述します。この場合テンプレート名は「original template page」になります。後は好みのレイアウトになるようにソースを調整します。

<?php
/* Template Name: original template page */

(ソースは省略)

?>

準備は以上です。
管理画面にアクセスし、固定ページを編集すると、右の「ページ属性」の部分からテンプレートが選択できるようになっているはずです。

テンプレートを選択することで、そのソースを元にページが生成されます。

この技術を使いこなすことで、Wordpressをブログツールのみならず、本格CMSとして活用することができるでしょう。

WordPress 2.5から使えるようになったショートコード機能を使ってみます。

ショートコード機能では、任意の処理を登録し、それを記事の文中からコールして結果を表示することができます。
とりあえず、サンプルを書いてその機能を確認してみます。

ショートコードを追加してみる

まずは、ショートコードの登録なのですが、functions.phpに以下の処理を追加します。処理を追加するのはプラグインでも構いません。

function shortcode_test(){
	return "ショートコードテスト!!";
}
add_shortcode('st', 'shortcode_test');

「st」というショートコード名で関数「shortcode_test」を登録します。関数の機能としては「ショートコードテスト!!」と表示するだけの処理です。

WordPressで管理画面にオリジナルの設定画面を追加してみます。

主にプラグインを作成する場合に、設定画面を追加する必要が生じると場合があります。
ただ、設定画面の追加は、アクションフックをプラグインに記述する事で実現できますが、functions.php上に記述しても同じ結果が得られます。

具体的なステップとしては、画面を構成するHTMLを含んだ関数1を構築し、その関数1をメニューに登録する処理を記述した関数2を記述し、そして関数2をアクションフックに登録するという流れになります。
初めてだと、この感覚を理解するのは難しいと思います。以下のサンプルを見ながら確認しましょう。

WordPressでプラグインを作ってみます。
今回は導入編として、バージョン3.2.1上で特に意味を持たないプラグインを作成してみたいと思います。

PHPファイルをプラグインフォルダに作成する

WPを設置したフォルダ内の「/wp-content/plugins/xxx.php」にPHPファイルを新規作成します。
ファイル名の「xxx」は任意ですが、他のプラグインと名前が被らないようにしなければなりません。そうは言っても、現状、WPのプラグインは無数に開発されているので、完全に衝突を避けるのは難しいかもしれません。プラグインを公開する場合は気を使う必要がありますが、個人的用途を作成する場合は、そこまで神経質になることはないかもしれません。

今回は確認のために、フッタに「Hello World!」を表示するだけのプラグイン「hello_world.php」を作成してみます。

プラグイン情報をコメントアウトで記述する

PHPに以下の内容を記述します。

/*
Plugin Name: Show Hello World
Plugin URI: https://helog.jp/
Description: test test test test test
Version: 1.0
Author: H.Y
Author URI: https://helog.jp/
*/

これらの内容は、WPの管理画面で表示される内容です。また、プラグインを公開する場合は、この内容で展開されるので、プラグイン検索などを含め考慮する必要があります。また、先ほども述べたように、プラグイン名については他の公開されているプラグイン名と被らないようにしなければなりません。さらに、日本語限定のプラグインでない限りは英語で記述することが奨励されています。

WordPressで記事を書く際に画像を追加すると、デフォルトの機能のままでは画像ファイルへのリンクが追加されるだけです。
例えば、「sample.gif」をアップロードした場合に、以下のコードが追加されます。

<a href="https://helog.jp/wp/wp-content/uploads/2011/05/sample.gif">
<img src="https://helog.jp/wp/wp-content/uploads/2011/05/sample-300x243.gif" 
alt="" 
title="wordpress" 
width="300" 
height="243" 
class="alignnone size-medium wp-image-1420" /></a>

画像への直リンクとは味気ないので、thickboxなどを組み込もうかと考えていたのですが、どうやらWordpressにはデフォルトでthickboxが用意されているようです。
利用方法は簡単で、以下のように「header.php」で関数「add_thickbox()」をコールするだけです。

MovableTypeはデフォルトでページ分割ができません。
例えば、記事数が100を超えたため、トップやアーカイブなどの記事リストページを10記事ずつに分割しページング処理を行いたいといった場合があります。しかし、MovableType本体だけではページを分割し、以下のようなリンクを生成するのは困難です。

「<>」

ほとんど必須の機能なので、いつになったらMTにデフォルトの機能として組み込まれるのかと前々から思っていたのですが、未だ実装されていません。

さて、そのような時はプラグイン「PageBute」が便利です。
静的ページ用ページ分割プラグイン:PageBute

Monthly Archives