CMS構築を目的にPHPをベースとしたWordPress、CakePHPやPEARなどオープンソースを中心に解説しています

WordPressにはデフォルトでサイト内検索の機能があります。
今回はその検索フォームの設置、検索結果一覧ページの実装方法です。

検索フォームの設置

以下の関数をコールするだけで、検索フォームを設置することができます。

<?php get_search_form() ?>

ヘッダ、フッタやサイドメニューなど好きな所に「get_search_form」を記述するだけです。
すると以下のデフォルトコードが出力され、検索フォームが表示されます。

<form role="search" method="get" id="searchform" class="searchform" action="http://cms.helog.jp/">
<div>
<label class="screen-reader-text" for="s">検索:</label>
<input type="text" value="" name="s" id="s" />
<input type="submit" id="searchsubmit" value="検索" />
</div>
</form>

WordPress のカテゴリ管理画面でID情報のカラムを追加して、ソート可能にする方法です。

デフォルトのカテゴリ管理画面では、リストにカテゴリIDは表示されていません。
「編集」のパスからIDを抜き取る方法がありますが、スマートではありません。

またWordpressはカテゴリ一覧の表示順を指定できないことがしばしば課題になりますが、
IDでソートする方法もあり、その場合にやはりIDを表示する画面は必要になります。

フックを設定してカテゴリIDカラムを追加する

まずは、function.phpなどに以下のフック処理を追加して、IDカラムを表示させます。

WordPressで自作のログイン・ログアウト画面を設置する方法です。

CMSとして人気のWordPressですが、クライアントに対して管理画面のインターフェースはあまり使い勝手の評判がよくありません。使いやすいようにカスタマイズしてくれといった注文もしばしばありますが、その中でも、今回はログイン・ログアウト画面について考えてみます。

オリジナルのログイン画面を設置する

オリジナルのログイン画面について、まず、ログイン処理のしくみですが、単純にPOSTリクエストでログインを実行するだけです。

具体的にはユーザ名を「log」にセットして、パスワードを「pwd」にセットして、「wp-login.php」に対してPOSTでリクエストを送信すればログイン処理が行われます。
送信先のURLは関数「wp_login_url」で取得することができます。また、引数にリダイレクト先を設定すれば、ログイン成功後に表示する画面のURLを指定することができます。

WordPressでアイキャッチ画像や投稿中の画像など、メディアが保存されるディレクトリを変更する方法です。

デフォルトでは「(WordPressの設置場所)/wp-content/uploads」に保存されますが、セキュリティの面からインストール先を隠蔽するなど、運用の都合上、ディレクトリを変更したい場合があります。

そのような場合、まずは管理画面にログインした状態で以下のURLにアクセスします。

http://cms.helog.jp/wp-admin/options.php

するとWordPressの細かい設定項目の一覧が表示されます。
wp-upload1

WordPressのセキュリティチェック項目一覧です。

最近WordPressを使った要件がますます増えてきたのですが、そんな中でセキュリティチェックはルーチンワークとなっています。

オープンソースとして、活用事例も格段に多いWordPressですが、それに伴い攻撃の対象となりやすいのも事実です。ここで今一度、そのセキュリティの精度を確保するために、チェック項目一覧としてまとめてみます。

インストール編

WordPressインストール時に気をつけたいセキュリティチェック項目の一覧です。

WordPressインストールディレクトリの変更 WordPress本体のインストールディレクトリはルートにせずに、任意のディレクトリに設置しましょう。また、ディレクトリ名は「wordpress」や「wp」などとせずに、連想されないディレクトリ名にしましょう。
テーブルプレフィックスをデフォルトから変更する インストール時、デフォルトで生成されるDB内のテーブル名プレフィックスは「wp_」です。データベースを攻撃の対象とされた場合の対策として別のプレフィックスに変更しましょう。
SSL通信を適用する ログイン画面、管理画面にはSSLを適用して、通信を暗号化しましょう。
ユーザ名を「admin」などとしない 不正ログインを防ぐため、ユーザ名を「root」や「kanri」などにしない。特に、以前のバージョンでデフォルト管理ユーザ名である「admin」にはしない。

あるCMSをWordPressに移行するという事で、既存データを流し込みたいという依頼がありました。
そこで、関数wp_insert_postを使って投稿を一気に流し込む方法を考えてみます。

はじめは、それぞれのCMSでDB上のデータ構造が異なるので、詳細を把握した上で、PHPでDBからDBへのデータ移行プログラムを書くという、かなりリスクのある方法を検討していました。
しかし、WordPressのDBを直接操作することは、後に整合性がとれなくなるなど危険があります。

調べてみると、WordPressでは管理画面のインタフェースから記事を投稿する以外に、関数wp_insert_postを使ってプログラム上から整合性のとれた投稿が可能なことを知ったので、これを利用することにしました。

FuelPHPのAuthパッケージで会員管理やログイン画面などの作成に便利な認証機能を使ってみました。

今回はAuthパッケージの中でも基本的なドライバセット「Simpleauth」を利用してみます。

なお、今回の確認環境は以下の通りです。

  • PHP 5.4
  • FuelPHP 1.7

※FuelPHPはDB接続設定済みとします

FuelPHPのOilコマンドを使ったソース生成がものすごく便利です。

コマンドラインからOilコマンドを実行するだけで、Model、ViewやControllerクラスを自動生成してくれます。
また、Model生成時には、DBに定義したテーブルをcreateしてくれたり、cronジョブを実行してくれたりと、MVCフレームワーク特有のめんどくさい準備作業を自動化してくれます。

以下、今回確認した環境です。

  • Windows 7
  • xampp 1.8.2
  • FuelPHP 1.7.2

軽量で柔軟性に優れいていると話題のFuelPHPをWindows環境にインストールしてみます。

FuelPHP » A simple, flexible, community driven PHP5.3 framework.

今回検証した環境は以下の通りです。

  • FuelPHP 1.7.2
  • PHP 5.4.19
  • xampp 1.8.2
  • Windows 7

PHPはxamppのものを使います。
FuelPHPはPHP 5.3以上で動作するという事なので、要件は満たしています。

さくらレンタルサーバ上でWordPressのマルチサイト機能を有効にしてみました。
WordPressは基本的に1本で1サイトしか管理できませんでしたが、バージョン3.0からマルチサイト機能が追加され、これにより複数サイトを管理することができます。

これまで何度かトライしては失敗していたのですが、ネットで実装例の記事も充実してきたので、それらを頼りに再チャレンジです。
また、多くは新規WordPressインストール時を奨励していますが、今回はあえてハードルを上げて既存のWordPressを一か所に集約する目的で、マルチサイト化にチャレンジしてみたいと思います。

Monthly Archives

Search