タグ別アーカイブ: WordPress

WordPressでPDFを取り込む方法と、気をつけるポイント

WordPressでPDFを取り込む方法と、気をつけるポイント

CMS導入がコーポレートサイト構築時の機能要件として必須となったいま、対象となることが多いのがニュース、トピックス、新着情報などと呼ばれるセクションだ。
このセクションの機能として、多いリクエストはPDFの掲示だろう。もっとも、情報の根幹となるテキストの整形、写真の挿入機能などを省いてのことではあるが。

この記事では、CMSとしてWordPressを採用しているコーポレートサイトにおいて、特別なプラグインをインストールすることなくPDFを掲示する方法をお伝えする。

予算の関係でそこまでの作り込みが依頼できなかった、もしくはWEB制作会社の配慮がなかったために、PDFを掲示するための機能が盛り込まれていないCMSをご利用のWEB担当者の参考になれば幸いだ。

あなたがWordPress初心者であっても問題ない。
カスタマイズされていない管理画面で、なおかつWordPress標準のエディターを利用するだけ、という条件でPDFを掲示できるようになるポイントを紹介しているからだ。

PDFの掲示で、おさえておきたいこと

PDFの掲示で、おさえておきたいこと

WordPressの操作方法の説明に入る前に、PDF改ざんの可能性について確認しておこう。

コーポレートサイトで注意すべきことのひとつに、ファイル改ざんのリスクがある。
PDFファイルは、リードオンリー(書き込み不可)の電子ドキュメントとの認識している方がいるが、PDFは簡単に書き換え可能な電子ドキュメントなのだ。
Adobe社のAcrobatやサードパーティのソフトが手元にあれば、内容の書き換え、編集など簡単にできてしまう。それなのに、重要な決算情報やニュースリリースに書き込み不可とするセキュリティをかけていないPDFドキュメントが多いのが現実なのだ。

オウンドメディアとしてWEBサイトで情報をダイレクトに発信するにあたっては、インターネットの怖さ、悪意の第三者から身を守る最低限のリテラシーを持ち合わせておくべきだ。

書き込み不可にするセキュリティ設定は、前述のAdobe社「Acrobat」を利用しよう。
まず、「ファイル」>「プロパティ」>「セキュリティ」タブから表示される画面を表示させ、図で示す設定を行う。たったこれだけの手間をかけるだけで、あなたの会社のセキュリティレベルは格段にアップする。

大量のPDFファイルに対してセキュリティ設定を施す場合は、「アドバンスト」>「文書処理」>「バッチ処理」からバッチ処理で一括処理することも可能だ。

Acrobatのセキュリティ設定

WordPressでPDFを取り込む方法と、気をつけるポイント、後半は

次ページ「PDFファイルへのリンク方法」へ

WordPressの記事を、一定期間で非公開にする方法

WordPressの記事を、一定期間で非公開にする方法

WordPressには、投稿記事を予約公開する機能は実装されているが、自動的に非公開する機能は実装されていない。
WordPressを純粋にブログとして利用する場合は、特に投稿を非公開にすることは考えなくていいが、企業サイトのIR情報やトピックスなどのCMSとして利用する場合は、一定期間を経過した古い情報を非表示にしたいとの要望が発生することがある。

プラグインとしては、一定期間経過後に自動的に非公開にすることが可能な「Post Expirator」などが存在する。しかし、個々の投稿にそれぞれ非公開日時を設定する必要があり、オペレーションが面倒だし、設定し忘れることも十分に考えられる。大切な内容であるだけに、ミスは許されないものなのだ。

当社クライアントの要望としては、公開日からある一定期間、例えば3年が経過した投稿記事を一律に非公開にするというもの。プラグインではなく、独自ツールを開発してシステムに組み込むことにした。

WordPressデフォルトの機能で非公開にする方法

独自ツールを開発する以外で、不特定多数の訪問者に対して記事を「見えない状態にする」にはいくつかの方法がある。
この記事の目的は自動で公開終了してくれる独自ツールを作ることなのだが、もしかするとデフォルトの機能で間に合うことがあるかもしれない。念のため、デフォルトの機能で公開を終了する方法をおさらいしておこう。

下書きで保存し、非公開にする

これは本来、執筆途中の記事を一時的に保管しておく場合に利用する方法だ。
新規に作成した記事であれば「下書きとして保存する」ボタンをクリックすれば下書き保存してくれる。もちろん「非公開」で保存される。

ユーザーの権限が寄稿者であれば必然的に「下書き」状態でしか保存できないため、投稿者以上の権限を持つユーザーが公開することになる。ユーザーの権限と「レビュー待ち」とを組み合わせれば、簡易ワークフロー的に記事の公開も可能だ。
すでに公開中の記事であっても、「ステータス」を「下書き」に変更して更新すれば下書き保存し「非公開」にすることが可能である。

下書きで保存し、非公開にする

「非公開」で保存する

そもそも記事を「非公開にする」とは、この操作のことである。
執筆した記事を保存する場合に、公開状態を「非公開」にして保存すればよい。ただし、保存ボタンのラベルはなぜか「公開」である。「非公開の記事を公開する」ということなのだろう。

「非公開」で保存する

「ゴミ箱」へ送り、非公開にする

すでに公開済みの記事を何らかの理由で非公開にする場合、「ゴミ箱」へ送ることでも非公開にできる。将来完全に削除してしまうまでの一時保管的な意味合いがある。
記事一覧上で対象となる記事の上にマウスオーバーするといくつか操作コマンドが表示される。その中に「ゴミ箱」があるのでクリックすればよい。

「ゴミ箱」へ送り、非公開にする

「パスワード」を設定し、限定公開にする

「パスワード」を設定し、限定公開にする

パスワードを知っている人以外には「非公開」と言う意味で説明に加える。
公開状態で「パスワード保護」を選択し、パスワード文字列と共に保存すればパスワードで保護された記事が公開可能だ。

ただし、この機能には、個人的にいただけない部分がある。それは、記事のタイトルは一般に公開されてしまう点だ。

筆者としてはこの記事の存在すらもパスワードを知っている人以外には知られたくない場合に使いたい機能であるが、標準仕様としてはそうではないようだ。もちろんテーマファイルをカスタマイズすれば、パスワード付きの記事のタイトルを表示しないことは可能だが・・・。

公開日時を指定して公開する(公開予約)

自動公開日時までは「非公開」と言う意味合いで説明に加える。
記事を公開する際、「公開日時」に未来日時を設定し公開(更新)すれば、設定した日時までは非公開となる。

公開日時を指定して公開する(公開予約)

WordPress用に、自動で公開終了してくれる独自ツールを作る

自動的にコンテンツを非公開にする「独自ツールを開発する」といっても、さほど難しいものではない。

処理的には、

  • 全投稿を取得し、ループする。
  • 投稿日時と現在日時-3年を比較する。
  • 投稿日時の方が過去であれば、ゴミ箱に送る。

以上である。

ソースの一例を以下に挙げておくが、WordPressがインストールされているフォルダーなどは、あなたの環境に合わせてほしい。

require('./wp-load.php');
require('./wp-config.php');

$delete_day = strtotime('-3 year');
$my_posts = get_posts("posts_per_page=-1");

foreach($my_posts as $post): setup_postdata($post);
	$post_date = strtotime(get_the_date('Y/n/d'));
	if ($delete_day > $post_date):
		wp_trash_post();
	endif;
endforeach;
wp_reset_postdata();

独自ツールを実行する

独自ツールの実行には、いくつかの方法がある。

1.サーバーのOSがUNIX系の場合、定時実行のcronを利用する

先ほどのソースを「delete_news.php」などのファイル名で任意の場所に保存し、crontabコマンドでcronを実行するように設定する。

例えば、毎日朝方6時に実行する場合は以下のような記述内容だ。

0 6 * * * /usr/bin/php /home/wp/delete_news.php

2.独自ツールを公開領域に格納し、外部から手動実行する

公開領域に格納し、外部から手動実行

次に、ブラウザから実行する方法。
他者から実行できないように、HTTPの基本認証をかけるなどのセキュリティに対策は施しておくべきだ。

先ほどのソースを「delete_news.php」などのファイル名で外部からブラウザでアクセス可能な領域に保存し、ブラウザのアドレスバーに直接URLを入力し実行する。

3.サイトトップページの表示に連動し、実行する

サーバーで稼働しているWEBサーバーがApacheの場合、SSIを利用してトップページの表示時に組み込み実行する方法。ただし、サイトのトップページが表示される度に実行されるので、投稿の件数が多いサイトだと、トップページの表示に時間がかかる可能性がある。

先ほどのソースを「delete_news.php」などのファイル名で任意の領域に保存し、サイトのトップページのHTMLに以下のようなSSIの記述を追記する。

<!--#include virtual="/delete_news.php "-- >

4.WordPressで表示されるページに連動させて、実行する

最後は、WordPressのテーマファイルを構成するfunctions.phpに、直接ロジックを記述する方法だ。ただし、WordPressのページを表示したり管理画面を操作すると、常に実行されることになってしまう。

テーマファイルの中にあるfunctions.phpをテキストエディタで開き、ファイルの最後に先ほどのソースの先頭のrequire宣言を除いた部分をそのまま貼り付ければいい。

WordPressは、機能追加も豊富な関数群が開発をサポート

機能追加も豊富な関数群が開発をサポート

WordPressの標準機能ですべてが満足できることもあれば、できないこともある。
WordPressには、豊富なプラグインが存在するが、残念ながらしっくりこない場合もある。
その場合は、自力でのプラグインやアドオンツール(独自ツール)の開発に迫られるが、WordPressの設計者はそのあたりもよく心得ていて、そんな我々のために豊富な関数群を準備していてくれるのだ。

今回のケースは、まさにそのパターンで独自ツールを開発した事例。
今回は利用していないが、WordPressの処理のタイミングに自ら開発した独自ツールの実行を割り込ませることができる、フックやフィルターと呼ばれるインターフェイスも準備されている。
WordPressは、これらの関数群やフック、フィルターを駆使することで、自由度の高いCMSとして利用することが可能である。腕に覚えのある読者は、トライされてみてはいかがだろうか。

WordPressでYouTube動画を埋め込み、ギャラリーに

WordPressでYouTube動画を埋め込み、ギャラリーに

通勤電車のなかで、待ち時間に、テレビを観ながら、話題の動画をオンデマンドで楽しむ毎日。 携帯デバイスの4G LTE化も手伝い、YouTubeは、いまや企業にとってプロモーションの必須ツールになった。

外部のサービスを自社サイトに取り込むのは、サービス提供サイトの仕様変更などに伴ってリスクがついてまわるが、それを補っても余りあるほど恩恵は大きいものだ。

今回は、YouTubeの公式チャンネルに登録した動画コンテンツをWordPressの記事に埋め込んだり、自社の動画ギャラリーとして公開する方法を紹介する。YouTubeを代表とする動画SNSの採用を検討する際の参考となれば幸いだ。

動画ギャラリープラグインは、企業サイトに馴染みにくい

動画ギャラリープラグインは、企業サイトに馴染みにくい

WordPressには、動画ギャラリーに関するプラグインも数多く存在する。 しかし、評価の高いプラグインをざっと試したものの、個人ブログなら許される機能やフォーマットも、高機能すぎたり見せ方が奇をてらいすぎている感がある。企業サイトに導入するには馴染みにくいのではないかと考えている。

例えば、サムネイル画像をYouTubeが提示する3枚からしか選べなかったり、ギャラリーへの掲示件数が多くなると、YouTubeのサムネイル送出処理の時間が長くなり、ギャラリーページ自体の表示が極端に遅くなったりと、運用側でコントロールできない部分が出てくる。さらに、(プラグインを利用した場合によく遭遇する問題だが、)サイトのデザインテンプレートが組み込みにくいことも多かった。

WordPressで、専用の管理画面を準備するのがベスト

専用の管理画面を準備するのがベスト

既成のプラグインを採用する際の不都合は、もちろんプラグイン自身を改造することで対応は可能だ。ただ、いざ改造に着手すると深みにはまり、帰還することが困難になってしまうこともあるため、当社では専用の管理画面をオリジナルで準備することにしている。

実のところ、専用のオリジナル画面を準備した方が、本稼働後にクライアント側で運用することを考えても、他のコンテンツと同じ管理画面上でメンテナンスできる方がいい。さらに、当社もシステムを管理する上で、オリジナルで構築した方が将来さらに手を入れることになっても見通しが良いのだ。

1.管理画面の仕様

YouTube動画を埋め込むための「専用管理画面」といっても、決して多機能なものではない。入力項目は、おおよそたったの4つだ。

  • タイトル
  • YouTube公式チャンネルに登録した、個々の動画URL
  • サムネイル用画像の登録
  • 動画を紹介するためのコメント

以下が、YouTube動画を管理するための専用画面のキャプチャだ。

管理画面の仕様

これらの入力を実現するために、これまでにも幾度となく紹介している定番プラグイン「Advanced Custom Fields Plugin」を利用する。
すでにいくつかの記事を読んだ方には繰り返しになってしまうが、「Advanced Custom Fields Plugin」は簡単にいうと、オリジナルの管理画面を作るためのミドルウェア的なプラグインだ。

今回の動画ギャラリーにおいては、「Advanced Custom Fields Plugin」の機能のひとつである、「リピート項目」を利用することで、複数の動画を管理画面上でリスト化でき、運用が容易になる。掲示する動画の数が20件程度までであれば、リピート項目で一画面におさめるほうが管理しやすいからだ。

WordPressでCMS:製品関連情報の一元化をプログラムなしで実現

2.動画ギャラリーページの体裁

動画を掲示するギャラリーページのイメージ(ワイヤーフレーム)は以下の通り。
管理画面のリピート項目で登録した順に従い、表示してくれるようになる。

ギャラリーの仕様

3.動画ギャラリーページでの再生

動画の再生

動画ギャラリーページ上での再生には、javascriptのライブラリー「jquery.colorbox.js」を利用している。「jquery.colorbox.js」は、ポップアップウィンドウを表示させるためのライブラリーの定番で、当社でも頻繁に活用させていただいているもの。

動画ギャラリーページ上のサムネイルをクリックすると、ウィンドウがポップアップして再生がはじまる。
右に掲載のキャプチャが、実際に動画を再生している様子だ。

外部サービスと自社WEBサイトとの連携

外部サービスと自社WEBサイトとの連携

今回はYouTubeに登録済みの動画を「動画ギャラリー」にして、自社のWEBサイトへ埋め込み、2次利用する形式を示した。YouTubeが提供するURLを単純にページ上に張り付けるだけでも動画ギャラリーは実現できるが、アイキャッチとなるサムネイル表示や、動画の紹介コメントを付加すれば、オリジナリティーあふれる仕上がりとなる。

YouTubeに限らず多くのサービスが、WEBサイトにデータを掲示しやすいようにインターフェイスを提供してくれているが、ここにもうひと手間かけることであなたのWEBサイトを訪問してくれた人に対するアクセシビリティー、おもてなし度をもう一段向上させてくれるだろう。

これで完璧、WordPressでニュースの設定

これで完璧。WordPressでトピックスの設定リスト

コーポレートサイトで必要な、ニュース(お知らせ、新着情報)などのリリース情報。

製造企業が新製品をリリースする際には、詳細内容に商品写真を多用したり、表組みを用いてスペックを掲示するなど、テキストのみに限らないケースが発生する。WordPressであればHTMLを記述できるので、対応は可能だ。

しかし、このような基本仕様では対応できない場合や、クライアント側のみで運用するなど、HTMLによる入力が困難な場合は、ニュースの掲載パターンをあらかじめ精査し、入力項目の追加とテーマファイルの改造で、柔軟に対応できる。

この記事では、ニュースにWordPressを活用する際に、おおよそコーポレートサイトで必要となる基本的な仕様と実現方法を紹介しよう。

ニュースの基本構成と基本入力項目

当社がニュースにWordPressを組み入れる場合の、基本構成(基本仕様)を以下に示しておく。よほど特殊なケースを除いて、以下の基本仕様でほぼすべての案件のニュースを実現している。

ニュースの基本構成

基本仕様の表示項目を以下に示す。

項目 内容
更新日(掲載日) ニュースのリリース日
WordPressの公開日時を利用
タイトル ニュース一覧やトピックス詳細のタイトル
WordPressのタイトルを利用
本文 ニュース詳細の内容
WordPressの記事本文を利用
リンクURL タイトルをクリックされた場合、ニュース一覧から詳細を表示することなく、入力されたURLの直接リンク先を表示
Advanced Custom Fieldsプラグインを利用
PDFファイル タイトルをクリックされた場合、PDFファイルへリンクする
PDFファイルのアップロード機能を含む
Advanced Custom Fieldsプラグインを利用
別ウィンドウ表示 上記URLもしくはPDFが入力されている場合、ブラウザの別ウィンドウ(タブ)で表示するかどうかの設定
Advanced Custom Fieldsプラグインを利用

※リンクURLが入力されている場合は、本文よりも優先する。
※PDFファイルが指定(アップロード)されている場合は、リンクURLよりも優先する。

ニュースの入力画面

ニュースの入力画面は以下の通り。

入力画面

サイトTOPページへの新着を10件表示する方法

HOMEで最新のニュース数件を表示したり、常にサイドバーに表示したり、あるセクションのトップにそのカテゴリーに関連するものだけを抽出して表示したりすることがある。
この場合には、前記事「WordPressの記事を、一定期間で非公開にする方法」で紹介した独自ツールを制作し、SSIで静的HTMLに組み込む方法で対応している。

WordPressの記事を、一定期間で非公開にする方法

以下にソースの一例を挙げておく。

<?php
require('./topics/wp-load.php');
require('./topics/wp-config.php');
?>
<?php
	$post_all = array(
		'post_type'  		=> 'post',
		'numberposts'		=> 5,

	);
	$get_posts = get_posts($post_all);
?>

<?php if(!empty($get_posts)):?>
<dl>
<?php foreach($get_posts as $get_post):?>
	<?php
		$post_id = $get_post->ID;
		$get_post_time = get_the_time('n月j日',$post_id);
		$post_cat = get_the_category($post_id);
		$topics_url = get_field('topics_url',$post_id);
		$topics_window = get_field('topics_window',$post_id);
		$topics_pdf = get_field('topics_pdf',$post_id);
	?>

	<dt><?php echo $get_post_time;?></dt>

	<?php if (!empty($topics_pdf)):?>
		<?php if($topics_window == "はい"):?>
			<dd><a href="<?php echo $topics_pdf;?>" class="arw-pdf" target="_blank"><?php echo $get_post->post_title;?></a></dd>
		<?php else:?>
			<dd><a href="<?php echo $topics_pdf;?>" class="arw-pdf" ><?php echo $get_post->post_title;?></a></dd>
		<?php endif;?>
	<?php elseif(!empty($topics_url)):?>
		<?php if($topics_window == "はい"):?>
			<dd><a href="<?php echo $topics_url;?>" target="_blank"><?php echo $get_post->post_title;?></a></dd>
		<?php else:?>
			<dd><a href="<?php echo $topics_url;?>"><?php echo $get_post->post_title;?></a></dd>
		<?php endif;?>
	<?php else:?>
		<dd><a href="/topics/?p=<?php echo $post_id;?>"><?php echo $get_post->post_title;?></a></dd>
	<?php endif;?>
<?php endforeach;?>
</dl>
<?php endif;?>

カテゴライズとタブ化

製造企業の場合、広報系の情報(IRや人事異動など)と製造部門(開発部門)発信の新製品や仕様変更などに関する情報、サポート部門のリコール情報や製造中止に関する情報などが混在するため、ニュースのカテゴライズ(分類)が、追加要件としてよく発生する(タブなどで分類、内容を切り替えて表現するなど)。
その場合は、WordPress標準の「カテゴリー」を利用してニュースを分類、表示処理でカテゴリーを加味して処理する。

ニュースのカテゴリーとタブ化の例を以下に示す。

タブ化その1
タブ化その2

後付け可能なニュースのWordPress化

既存のWEBサイトが静的なHTMLで構成されていても、ニュースのみWordPressによるCMS化が可能だ。ただし、サーバー環境がWordPressの稼働条件を満たしている必要はある。
従って、次のサイトリニューアルを待たなくても、ニュースだけCMS化で一歩先を行くことができるのだ。

ニュースとWordPressの相性

ニュースとWordPressの相性

そもそも、WordPressはブログのためのエンジンであり、日々更新される記事を時系列に蓄積し、表示することを目的としている。

WordPressとニュースの相性は非常に良い。
WordPressが標準で備えている「タイトル」「本文」「カテゴリー」「公開日」だけでも最低限のニュース機能を実現することは可能だが、やはりこの記事で紹介したように、各企業が培ってきた方法に則した情報の公開をサポートするべきだ。

より良いカスタマイズによって、運用を円滑にし、ムダを排除できるようになる。まず足下にある情報の発信方法、他社の方法を研究することで効果的な運用方法から検討を始めてはいかがだろうか。

WordPressへのログインアタックを一発で撃退するプラグイン

WordPressへのログインアタックを撃退

WordPressをCMSとして採用されている人にとって気がかりなのは、普及率が高いことによるハッキングの多さだ。更新を重ねて、やっと満足できるアクセスが稼げるようになった矢先に、知らない間にハッキングされて、マルウェアを訪問者にまき散らしていた・・・などという事態だけは避けたい。

ハッキング対策を突き詰めて考えると、心配で寝られなくなってしまうので、ハッキングのなかでもとくに注意したい「ログインアタック」対策についてプラグイン「Limit Login Attempts」を紹介しよう。

WordPressはカスタマイズに関する情報がネット上に豊富にあり、ありとあらゆる便利なプラグインが無料で入手できることから、世界的に人気がある。CMSとしても多くのWEBサイトで活用されており、ハッカーたちは無数に攻撃対象を持っていることになるのだ。

彼らは無作為に攻撃を仕掛け、WordPressのセキュリティホールをついてハッキングしようと執拗にアタックを仕掛けてくる。

この記事では、ログインアタックを一発で撃退するプラグイン「Limit Login Attempts」の導入方法を日本語化を含めて紹介していく。あなたも早く「安心」を手に入れ、訪問者に有益な記事をしっかり読んでもらえる環境を整えよう。

ハッキングは空き巣と同じ。居住者の自己責任で対策を打つべし

ハッキングは空き巣と同じ

「サーバー会社が、守ってくれてるでしょ?」

いったい誰がそのような都市伝説を流したのだろうか。
嘘だと思うなら、サーバー会社に問い合わせればいい。「自己責任で」という回答に愕然とするだけだ。

レンタルサーバーは、住居と同じ。誰も空き巣からあなたを守ってはくれない。
空き巣からあなたの家を守るために、セキュリティ会社と契約したり、人感センサー付きのライトを付けたり、カギを特殊なものに付け替えたりするのと同じく、WEBサイトにもハッキング対策が必要なのだ。

ほとんどのWEBサイトは、アタックを受けている

うちのサイトはアクセスも少ないし、個人情報を扱っているわけでもないので大丈夫、なんて考えていたら大間違いだ。あなたのWEBサイトのアクセスログをぜひ確認してみてほしい(できれば今後定期的に確認することをお勧めする)。

そこには必ず、ハッカーたちが攻撃を試みた痕跡が残されている。
下の画像が、ログインアタックを仕掛けられた痕跡を示すアクセスログの一部だ。

特徴としては、同じIPアドレスから短時間にログイン画面(wp-login.php)へのアクセスが記録されていることだ。「POST」と記録されており、機械的に多様なログインIDとパスワードを打ち込んでいることがわかる。一般に「ブルートフォースアタック(Brute Force Attack)」と言われる「パスワード総当たり」攻撃がこれだ。

直近のアクセスログに痕跡がなくても、過去数ヵ月間を調べれば必ず出てくる。アタック対策は、WordPress利用者の必要条件なのだ。

ログインアタックの痕跡

プラグイン「Limit Login Attempts」でログインアタックを撃退

プラグインでハッカーを撃退

プラグイン「Limit Login Attempts」は、WordPressのログイン画面であらかじめ設定しておいた回数のログイン失敗を検出すると、一定時間ログイン認証処理を停止するもの。

さらに制限回数のログイン失敗を検出した場合には、ロック時間が延長される。一定時間ログイン認証がロックされることで、アタックの効率を下げ攻撃者が退散する効果を期待するわけだ。
ログイン失敗の制限回数やロックの時間などは、管理画面で自由に設定でき、ロックがかかった場合には管理者へメールで通知してくれる機能もついている。

Limit Login Attemptsのインストールと設定

それでは実際に、プラグイン「Limit Login Attempts」を実装する手順を紹介しよう。
プラグイン実装の手順は、次のようになる。

  • 1.入手とインストール
  • 2.日本語化も可能
  • 3.プラグイン「Limit Login Attempts」の設定

1.入手とインストール

プラグイン「Limit Login Attempts」はWordPress.org からダウンロードすることができる。

WordPress.org「Limit Login Attempts」ダウンロード

プラグインの有効化

インストールは、ダウンロードした圧縮ファイルを解凍後、[/wp-content/plugins」へアップロードし、管理画面のプラグインから「有効化」すれば完了だ。そのままデフォルトの設定ですぐに機能してくれる。

2.日本語化も可能

プラグイン「Limit Login Attempts」は、初期状態では管理画面が英語表記のままだ。特に難しい英語が使われているわけではないので、そのまま使用しても機能的には何も問題はないが、日本語化して利用する場合は、日本語化ファイルが配布されているので利用してもいいだろう。

日本語化ファイル:limit-login-attempts-ja.po

ダウンロードした日本語ファイルの中に「limit-login-attempts-ja.mo」が存在するので、/wp-content/plugins/limit-login-attempts/にアップロードするだけで、日本語化は完了だ。

3.プラグイン「Limit Login Attempts」の設定

プラグイン「Limit Login Attempts」の設定は、デフォルトでも十分な設定がされているが、管理画面で図のように設定値を変更することでセキュリティを強固にすることも可能だ。

プラグインの設定

念のため、動作を確認してみよう

動作を確認してみよう。

ログインを失敗すると

ログファイルの記録

もしあなたがログインに失敗し、締め出されたら

もしあなたがロックされたら

常用しているパソコン以外でログインしようとした時など、ソラで覚えていたはずのパスワードを忘れてしまっていることはよくある話だ。「あれ?」と数回トライ&エラーを繰り返してしまうと、プラグインはあなたをハッカーとみなしてしまう。

カッとなってしまう方は、ギャンブルだけではなく、WordPressのログインも要注意だ。

不幸にもログインに失敗してしまった時にも、正規の管理者だけに許された救いの手は存在するから安心してほしい。
まず、WiFi接続していないスマホから管理画面にアクセスし、正しくログインする。プラグイン「Limit Login Attempts」の管理画面から「ロックを解除する」ボタンをクリックすると、ロック状態から解放される。

ロックの解除

WordPressを健全に運用してこそ、集客につながる

安全なWEBサイト運営を

お化け屋敷ではないのだから、危険が潜むWEBサイトに人が集まるはずがない。
集客し、訪問者にしっかり情報を持って帰ってもらうためには、WEBサイトを健全に運用することが最低限の条件だ。

WordPressは、サイト構築のツールとして非常にすぐれた構造と機能を兼ね備えている。多くのユーザーから支持されればされるほど、それに付け込もうとする者もいるのだ。WordPressをしっかり維持管理し、たくさんの方々にあなたのすばらしいコンテンツを届けて欲しい。

この記事が、まじめにWEBサイト運営に取り組んでいるあなたの参考になれば幸いだ。

WordPressでCMS:外部システム連携で、業務をバックアップ

WordPressでCMS

WordPressには豊富なプラグインが存在し、それらをうまく活用することでサイトを低コストで高品質に構築することができる。しかし、非常にニッチな要件や既存のシステム資産との連携に関してはプラグインが存在しないため、自力で対応しなければならない。

当社では、その課題に対し要件に応じて次の2つの手法で対応している。

  • オリジナルプラグインの開発
  • WordPressと外部システムを連携させる

この記事では、WordPressと既存のシステム資産を連携させる手法を取り上げ、主に後者の「WordPressと外部システムを連携させる」について紹介する。
WordPressと外部システムの連携を模索していたWEB担当者のヒントになれば幸いだ。

プラグインの限界を打ち破る

オリジナルプラグインの開発

WordPressでCMS

この手法は、管理も表示もすべてWordPressのなかで完結させる場合に適している。
管理画面ではWordPressの投稿機能などの基本機能と同列に扱われ、サイドバーにオリジナルメニューが追加されることになる。表示についても、WordPressテーマの作法に従い、テーマのなかで利用するものであり、あたかもWordPressの機能の一部のように振る舞える。

なお、「オリジナルプラグインの開発」については、詳しく解説されたサイトが数多く存在するので、興味のある方はそれらを参考にしてほしい。

WordPressと外部のシステムを連携させる

WordPressの機能や情報の一部を取り込み、メインの機能や処理は独自に開発したプログラムで行うイメージだ。
従って、WordPressの管理画面に追加される機能もなければ、WordPressテーマにも機能は提供しない。

独自に開発されたプログラムでは、その処理の先頭で「WordPressを利用する旨を宣言」することで、WordPressのほとんどの機能が利用可能になる。

例えば、WordPressで登録した記事のタイトルや本文を、独自に開発したプログラムに取り込み、表示することができるのだ。

WordPressと外部のシステムを連携させる

外部システムとの連携例

問い合わせフォームに物件名と通知先を連携する

たとえば、不動産物件を扱うWEBサイトにおいて、WordPressに登録済みの物件情報から、お目当ての物件に対する問い合わせフォームを表示する場合。

訪問者は、お目当ての物件詳細ページから問い合わせするのだから、物件名くらい自動的に表示してほしいはずだ。

このような場合、WordPressで格納したデータをきちんと取り出せれば、問い合わせフォームに自動挿入できる。さらに、問い合わせの受付メールを送る際にも、WordPress経由で登録さえしておけば、担当部署のメールアドレス宛に送信することも可能になる。

問い合わせフォームに物件名と通知先を連携

外部システムの認証機能として、ユーザー管理機能を転用

WordPressには、標準でユーザー管理機能があり、ログイン認証が実装されている。

これらは本来WordPressの管理画面へログインするための機能であるが、この機能を外部に構築したシステムの認証機能として利用することもできる。

たとえば、製品のCADデータを提供するサービスがWEBサイトに構築されていて、事前に登録されている訪問者だけに提供する場合に、WordPressのユーザー管理をそのサービスのログイン認証として転用することもできるのだ。

外部システムの認証機能として、ユーザー管理機能を転用

新着情報の最新10件を部分的に掲載する

同じドメインのWEBサイト上であれば、静的HTMLで制作されたページにも、WordPressで登録した情報を掲示できる。たとえば、ニュースや新着情報の最新10件をリスト表示するものだ。

この場合、連携の方法は2通りある。

ひとつは、SSIが利用できるサーバー環境であれば、被インクルードのファイルをphpで制作し、そのphpファイル内で「WordPressの機能や情報の一部を引用」する方法だ。

もう一つは、静的HTMLファイルの拡張子を「.php」に変更し、全体をphp化したうえで、そのファイルに「WordPressの機能や情報の一部を引用」する方法だ。

当社では、サポートスタッフの作業性を考慮し、SSIが利用できる環境であれば前者の「SSI被インクルードファイル方式」を採用することが多い。

新着情報の最新10件を部分的に掲載

WordPressで機能拡張するポイント

WordPressで機能拡張するポイント

すべての要件を、プラグインだけでは解決できないことがある。

要件に近いプラグインを改造するという手段もあるが、改造は予想外に工数がかかったり、思いもよらない場面で不具合が発生することがあるため、他人の手によってプラグインを改造するのは、システム担当者はできるだけ避けたいところだ。

この記事で紹介した、WordPressに登録されたデータと外部システム連携は、まさに「ひと工夫」の領域であり、恐ろしく工数がかかるものではないが、データの二重管理や省力化に大きく貢献できるものだ。

利便性を高め、訪問者に喜んでいただけるWEBサイトづくりを目指している人の参考になることを願っている。

WordPressでCMS:製品分類を改編し、訪問者ニーズを満足させよう

WordPressでCMS

訪問者は、さまざまなシチュエーションを背景に情報を求めてWEBサイトにやってくる。
「この機能を備えた製品があるのだろうか?」
「うちの問題を解決してくれる製品は?」などなど、
自分の抱える課題の解決を図るために、あなたのWEBサイトを訪問している。しかもそれが喫緊の課題なら、早く上手く解決できる製品なら、すぐにでも導入したいとさえ感じているかもしれない。

この訪問者のせっぱ詰まった状況に対し、情報を提供する側は自社で長年培われた部門別の製品体系のままWEBサイトを構築していることが多い。訪問者は、製品体系を推測しながら夜店の「くじびき」を引くように、お目当ての製品にたどり着かなければいけないのだ。

製品体系の変換作業を上手く行えなければ、訪問者はWEBサイトから離脱する可能性が高くなることは容易に想像できる。
自社都合の分類体系は、訪問者にとっては把握しづらい分類体系であることが多いのだ。

WordPressは、分類体系を複数持つことができる構造になっており、プラグインを導入すれば、分類体系をかんたんに追加することさえできる。さらに、追加する分類体系は製品情報の入力画面でプログラミングなしで連動させることも可能だ。

WordPressの特長とプラグインを利用すれば、自社の分類体系以外にもナビゲーションの切り口を複数準備することが可能になる。

この記事では、製品情報セクションに関連する情報をシームレスに掲載する方法を、プラグインソフトを含めて紹介する。訪問者をスムーズに誘導する課題をお持ちのWEB担当者のヒントになれば幸いだ。

訪問者に頭を使わせるサイトになっていないか?

あなたは総務部の担当者で、上司から「災害に備えて、防災グッズを揃えておくように」指示されたとしよう。
今では過去の震災の経験から、量販店やスーパーマーケットにおいても「防災コーナー」が設けてあり、必要なものを購入しやすい売り場が多い。

しかし「防災コーナー」がなかったら、あなたはどのように商品を買い求めるだろうか?

防災用品で、まず頭に浮かぶのは、「食糧」と「水」。「食糧」の代表選手といえば「カンパン」だ。

「カンパンって、どこの売場だ?」
「パンだからパンコーナー?」
「お菓子売り場か」
「保存食だから、乾物?」

人は、このような「一人問答」を無意識で行っている。
もし「防災コーナー」が設けてあれば、「一人問答」は必要なく、苦労なく自分の思いを果たせるのだ。

WEBサイトの製品情報セクションにおいては、自社都合の分類体系を維持しつつも、「防災コーナー」といった別の分類を簡単に追加できれば、訪問者にとって分かりやすいWEBサイトになるはずだ。分類体系を追加することは、従来のスクラッチによる開発であれば、データベース構造の変更を伴う大掛かりなシステム改造になる。
これに対し、分類体系を複数持つことができるWordPressは、「防災コーナー」のような別体系の分類を簡単に追加できるところに、このシステムを利用する理由があるのだ。

製品分類を自由に変更

分類体系をかんたんに追加できる、鉄板プラグイン「Custom Post Type UI」

このプラグインは、当社がWordPressを利用する制作案件でよく利用するプラグインである。
分類体系の追加は「Custom Post Type UI」の管理画面上で、追加する分類体系の呼称、たとえば「シーンで選ぶ」と、URLに組み込まれる文字列「scene」を入力すれば、即座に製品情報入力画面に追加した分類体系が現れる。

「簡単すぎる」分類体系追加

WordPressのタクソノミー機能

画面キャプチャは、「Custom Post Type UI」の管理画面。
WordPress上では「タクソノミー」としてカテゴリーやタグを管理しており、追加する分類体系もタクソノミーを追加する作業になる。「タクソノミー」とは、物ごとをグループ化することを指す。言い換えれば「分類」だ。

分類が新規追加される

「Plural Label」に追加する分類の呼称を「Taxonomy Slug」にURLの一部となる半角英数字を入力し、利用する投稿タイプから分類の利用先を選択。「Add Taxonomy」をクリックすると、即座に投稿の分類として追加される。

製品入力画面ではこのように使える

追加された分類は、WordPressに標準に備えられているカテゴリーと全く同じ操作で分類体系を登録することができる。もちろんツリー構造をとることも可能だ。

追加した分類体系の選択項目

製品情報の入力画面では、WordPress標準のカテゴリーと並んで、追加した分類体系の選択項目が表示される。該当する分類にチェックを入れれば、製品が所属する分類を追加できる。
プラグイン「Advanced Custom Fields」と組み合わせれば、さらに多彩で機能的な管理画面に仕上げることも可能だ。

分類体系追加の効用

長年社内で培ってきた製品の分類体系を再構築することなど、容易ではない。組織や人が絡んでいれば、なおさらだ。

カタログなどの印刷物では柔軟な切り口で紹介することは難しいが、WEBサイトなら第二、第三の分類体系を導入し、訪問者をスムーズに製品情報に誘導できる。さらに言うならば、追加の分類体系は失敗しても再構築は可能なのだ。

また、追加の分類体系を導入することは「異なるキーワードを追加」することにもなり、SEO的にも意味がある。

「Custom Post Type UI」と「Advanced Custom Fields」を組み合わせ

WordPressで製品情報をCMS化するポイント

WordPressによるCMSは一般的になったが、単なる情報更新ツールとして利用するだけではもったいない。

サイト訪問者のニーズを満足させる製品検索に応用してこそ、真価を発揮できるのではないだろうか。

豊富なプラグインのいくつかを組み合わせることで、WordPressは化けてくれる。訪問者にも管理者にも利用しやすいWEBサイトを構築することができるのだ。

WordPressでCMS:製品関連情報の一元化をプログラムなしで実現

WordPressでCMS。製品関連情報の一元化をプログラムなしで実現

製品名、製品番号、仕様、カタログPDF、取扱い説明書、CADデータ、FAQ・・・、「製品」ひとつに、多くの関連情報が存在する。

情報の掲示方法を間違えれば、「情報が探しにくい=使いづらい」WEBサイトになってしまい、せっかくの「訪問者」≒「顧客候補」を逃してしまう。

当社では、WordPressをCMSに利用することにより、製品をひとつ見つければ、関連する情報すべてを取り出せる方法を探し当てた。この考え方を採用して、訪問者を迷わせずスマートに情報を提供し、その心をガッチリ鷲づかみにしてほしい。

この記事では、WordPressを使った製品情報セクションに関連する情報をスマートに掲載する方法を、有用なプラグインソフトを含めて紹介する。訪問者をスマートに誘導する課題を解決できなかったWEB担当者のヒントになれば幸いだ。

訪問者が嫌がる、製品情報の構成とは

とりわけ、B2B企業の製品情報をチェックすると、製品情報に関連する情報が、それぞれ独立したコンテンツとして構成されていることが多い。各セクションが部門別の管理下にあるからか、特に何も考えなかったのか、情報がWEBサイト内に散在しているのは訪問者側からすると、迷惑このうえない。

例えば、

  • 製品検索 > 検索結果 > 製品詳細(製品名、製品番号、仕様・・・)
  • カタログダウンロード
  • FAQ

の各セクションが製品情報とは関連なく構成されていると、セクションTOPから製品体系にそって新たに「探し直す」ことになる。

よくあるサイトの構造

このような構成だと、訪問者はデメリットを被ってしまう。

  • 関連情報までのページ遷移が多く、複雑
  • 目的の情報にたどり着けない

製品情報に関わる各セクションが別々に存在してしまう最大の原因は、情報を掲載するためのしくみが各セクションに存在していることで、WEBサイトを簡素に管理しようとすることによるものだ。

つまり、掲載するためのしくみが各セクションにそれぞれに存在してしまうと、その関連性を保つには手作業(ひとつひとつリンクを張る作業)が必要になる。膨大な量の製品すべてを手作業で関連付けできなかったり、ディスコンになった製品に関連する情報がエラーを起こしたりするため、訪問者を誘導するのは各セクショントップまで、というわけだ。

製品に関連する情報を1ページに集約する

こういった不親切なWEBサイトを作らないために、我々はひとつの製品に関連するすべての情報を1ページにまとめてしまうことを目指している。製品情報を「ワンストップ」化するということだ。

しかし、ただ単に1ページにすべての情報を詰め込んだだけでは冗長なページになってしまうので、「タブ」を利用し、1ページの長さができるだけ短くなるよう構成した。

デザインだけではなく、情報を登録するための管理画面においても「ワンストップ」性を重視し、情報を関連付けしやすい操作性を実現している。

レイアウト自由自在、ダイナミックに切り替わる入力項目を実現する「Advanced Custom Fields」

「Advanced Custom Fields」は、当社がWordPressを利用する制作案件で、度々利用する超機能的で、超便利で、超クールなプラグインだ。
今回は、この「Advanced Custom Fields」の多彩な機能のなかから、以下に説明する2つの機能を利用した。

選択項目に連動する入力項目の制御

「Advanced Custom Fields」は、言い換えると管理画面を作るための管理画面のような役割を持つ。
例えば製品の詳細情報を入力する際に、WordPressのカテゴリーに「製品情報」と名付けたオプション(セクション)を選択すると、画面遷移することなく入力項目が出現し、「カタログダウンロード」と名付けたオプション(セクション)を選択すると、同様に入力項目が出現するというように、管理画面の動作を作り込めるのだ。

しかも、プログラミングなしに「Advanced Custom Fields」の管理画面だけで作り込める。プログラミングをしなければ、バグが発生することもない。制作品質の確保にも寄与するのだ。

上記の動作を実現することで、管理画面においても画面遷移を抑え、製品情報の入力負担を極力抑える効果をもたらしている。

WordPressで項目に該当する入力欄を自動表示

セクション間の関連付けを容易にする

FAQで、共通項目、個別項目を関連付ける要件があったとする。

  • 製品カテゴリーで共通のFAQ
  • 製品ごとに個別のFAQ
  • いくつかの製品にまたがるFAQ

「Advanced Custom Fields」は、入力中のFAQに対して、すでに登録済みの製品情報の一覧を参照して選択する機能や、すでに登録済みの製品カテゴリーを参照しながら関連付けを行う機能を作り込むことができる。管理画面の操作性までも、プログラミングなしで作り込むことができるのだ。

セクション間の関連付けを容易に

WordPressで製品情報をCMS化するポイント

WordPressによるCMSは一般的になったが、製品情報を一元化し、訪問者、管理者双方に使いやすくするには、いくつかの工夫が必要だ。しかし、WordPressは、豊富なプラグインのいくつかを組み合わせると、使い勝手の良いデータ入力ツールとして活用することができる。

今回は、WordPressのプラグイン「Advanced Custom Fields」を使い、ほぼノンプログラミングでこれを実現することができた。
さらに工夫を加えれば、プログラムの知識のないクライアント側で自由なデータ管理さえ実現してしまうスグレものにもなる。

今後もWordPressを活用したCMSについて情報を提供していく。あなたのより良いWEBサイトづくりの参考になれば幸いである。

WordPressでCMS:仕様項目まで更新可能、運用コストを低減

WordPressでCMS:仕様項目まで更新可能、運用コストを低減

製品カテゴリーごとに異なるスペック項目を持つ企業は多い。一般的な方法論でCMSを開発すると、スクラッチ(手組み)によるものになることが多く、初期コストは莫大なものとなる。

さらに、製品カテゴリーごとにスペック項目が異なるので、データベースにはすべての仕様項目を格納する必要があり、担当者による運用の手間も相当なものになってしまう。

しかし、WordPressが標準で備える管理画面とデータベース構造を利用すれば、一定の品質を確保しながら開発工数を削減でき、情報の更新も複雑さが緩和され担当者は煩わしさから解放される。

当社では早くからWordPressに着目し、試行錯誤を繰り返しながら積極的にCMSツールとして活用してきた。この記事では、WordPressを使った製品情報セクションの複雑な要求仕様を満たす方法を、有用なプラグインソフトを含めて紹介する。

訪問者により有益な情報を提供したいと考えつつも、開発コストと運用方法を解決できずにいたWEB担当者にとって、課題を解決するためのヒントになれば幸いだ。

カテゴリーごとに異なるスペック項目まで更新できる製品検索システム

製品に幅広いカテゴリーを持つメーカーでは、製品分類ごとに仕様の項目が異なっている。それゆえ、これらを管理するCMSも非常に複雑なものとなってしまいがちだ。

一般的なアプローチとしては、システム構築前に分類/品種/品目ごとにすべてのスペック項目を洗い出し、それぞれにデータベース(テーブル)を準備し、その上で管理することになる。

しかしこの手法では、将来にスペック項目が変更された場合や、当初想定していなかった新製品を掲載する際、柔軟性に欠け、その対応にはシステム的な変更作業が伴うことが多い。

当社では、WordPressのカスタムフィールドとプラグインを駆使することで、スペック項目も含めてクライアント自身で製品情報の更新作業を完結できることを実現した。

某機械メーカーが抱えていた課題

某機械メーカーが抱えていた課題

旧サイトでは、全カテゴリー/全製品のスペック項目を漏れなくデータ項目としていた。更新のためのCMSツールは導入されていたものの、更新作業ではデータがある部分のみ入力を行い、表示処理の段階でデータ表示の有無を制御していたのである。

また、スペック項目すべてを一律に管理画面で更新できるようにCMS化すると、製品情報の管理画面が数スクロール分の長さになってしまったり、更新しようとする製品には関係のない項目も表示されることになり、入力間違いが発生するといったトラブルが生じていた。

さらに、データベースのカラムとしてスペック項目を設定していたため、クライアント側で新製品をリリースする際には、新たにスペック項目の追加が必要となってしまう。都度発生する運用コストも本当に必要なのかという疑問の声さえ社内から聞こえていた。

WordPressデータベースの概念図

要求仕様

上記の状況を踏まえ、クライアント側から提示された要件は以下の通りだ。

  • 製品スペックに詳細な表記が必要(項目名、単位、スペック内容、全10~30項目)
  • カテゴリーごとに異なるスペック項目や単位をCMSで管理できること
  • 同一カテゴリー内においても、スペック内容の有無で項目自体の表示/非表示を制御できること
  • 製品スペックを条件にした製品検索は不要

スペック項目にとらわれない情報の保持

スペック項目にとらわれない情報の保持

スペック項目をデータベースのカラムに設定せず、WordPressのカスタムフィールドを利用することで、項目名や項目数に制限されないデータの保持を実現。スペック項目をCMS上で更新でき、その内容を即時登録可能とした。また、後述の「Advanced Custom Fieldsプラグイン」を採用することにより、柔軟性の高い製品登録画面を実現した。

カテゴリーごとはもちろん、製品ごとに異なるスペック項目をCMS上で自由に管理でき、不必要なスペック項目の排除を実現した。

本稼働後、製品に関するすべての情報をクライアント側でメンテナンスできる仕組み

選択項目(マスター)は、WordPressの「タクソノミー」を利用し、管理画面上で追加/削除を行えるように配慮。製品情報のメンテナンスについては、当社に依頼されることはなく、クライアント自身で完結できるようにした。

現行サイトからのスムーズなデータ移行

旧サイトからのデータ移行に際し、当社とクライアントが共同でカテゴリーに共通的なスペック項目をExcelシートにまとめた。クライアントは、初期移行情報としてそのExcelシートに全製品情報を記述。当社は、そのExcelシートをインポートする機能を構築した。

WordPressの管理画面

使えるカスタムフィールドを実現し、開発コストを削減する「Advanced Custom Fields」

WordPressには、「カスタムフィールド」と呼ばれる、投稿する記事に対してタイトルと本文以外の任意の「名前」と「値」を与えることができる機能が標準で準備されているものの、標準のままでは使えない。

「Advanced Custom Fields」は、管理画面からカスタムフィールドを簡単に定義できたり、入力欄を自動生成したりと、WordPressのカスタムフィールドを利用しやすくしてくれるプラグインだ。

また、入力したデータをデータベースから容易に取り出すことができるAPIを提供してくれているので、クライアントの操作で更新内容を表示することも可能にする。

筆者が「Advanced Custom Fields」を利用し、WordPressで実現した機能は以下のものだ。

  • スペック項目、単位、内容を1セットとして自由に追加/削除/編集する機能
  • Excelファイルのインポート機能
  • スペック項目の順番を自由に調整する機能

自由なカテゴライズを実現する「Custom Post Types」

WordPressに標準で実装されている分類項目は「投稿分類」のみだが、「Custom Post Types」を利用すれば、管理画面上で分類項目の追加や、その項目に含まれる選択項目の編集ができるようになる。

また、前述の「Advanced Custom Fields」と連携させれば、WordPressでより柔軟な管理画面を実現することができる。

「Custom Post Types」は、次の機能を実現するために利用した。

  • 製品分類以外の分類項目2種の追加とその選択項目の編集

WordPress

WordPressは、プラグインを組み合わせると、使い勝手の良いデータ入力ツールとして活用することができる。

さらに工夫を加えれば、プログラムの知識のないクライアント側で自由なデータ管理さえ実現してしまうCMSとして活用できるようにもなってしまうスグレものだ。

今後もWordPressを活用したCMSについて情報を提供していく予定なので、あなたのより良いWEBサイトづくりの参考になれば幸いである。