WordPressの固定ページで自分専用のスタートページを作ってみました。

ブラウザを立ち上げた時に表示させるスタートページは、今までiGoogleやNetbivesなどを使ってきましたが、サービスが無くなってしまったり、日本語対応していなかったりで妥協が続いていました。

ようやく満足のいくページを作ることができて大満足です! 欲を言えばメモ帳機能やToDo機能が欲しいですが、それはまた今度挑戦してみようと思います。

専用テンプレート

固定ページのテンプレート「page.php」内に条件分岐で作成してもできますが、今回は専用のテンプレート 「page-固定ページのslug.php」を準備しました。

header.php 等で読み込ませるものを変えたい場合は、「if (is_page(‘固定ページのslug’)) 」で分岐します。

アクセス制限

自分専用なので他の人はアクセスできないように、以下のプラグインを導入しました。

このプラグインは、ユーザーをグループ分けし、グループ単位でアクセスを制限することができます。

天気予報プラグイン

さらに、天気予報のプラグインです。

livedoorが提供している気象データ提供サービス「Weather Hacks」から、指定した地域の天気を取得するプラグインです。ウィジェットでも使えますが、私はショートコードで使用しました。

繰り返し可能なカスタムフィールドプラグイン Smart Custom Fields

ブックマークやFeed、動画などはテンプレートに直接記述でも良かったのですが、せっかくなのでWordPressの管理画面から投稿できるようにしようと思い、以下のプラグインを入れてます。

繰り返し設定が可能なカスタムフィールド用プラグインです。例えば、「ページタイトル+URL」のセットを増やして繰り返し入力することができます。

カスタムフィールドに登録したフィードを表示してみる(例)

上記で紹介した Smart Custom Fields を使う方法です。

Smart Custom Fields でフィード用の繰り返しカスタムフィールドを作り、表示条件で固定ページとIDを設定します。私の場合は「タイトル」と「フィードのURL」で作りました。

作ったカスタムフィールドを、テンプレートで呼び出します。Smart Custom Fields の場合は、グループ名で呼び出して、foreach で変数に入れる方法が簡単だと思います。

//--------------------------------------
// カスタムフィールドグループを読み込む
//--------------------------------------
$feed_group = SCF::get( '★グループ名' );
if (count($feed_group) > 0) {
	foreach($feed_group as $feeds) {
		//--------------------------------------
		// カスタムフィールドを読み込む
		//--------------------------------------
		$feed_title = $feeds['★タイトル'];
		$feed_url = $feeds['★フィードのURL'];
	}
}

★の所はSmart Custom Fieldsで設定した内容に書き換えてください。なお、上記はカスタムフィールドを取り出す部分だけを抜粋しています。フィードを読み込む方法は次です。

WordPressでFeedを表示するには、テンプレートから「wp-include/feed.php」を呼び出せば簡単です。

<?php
//--------------------------------------
// カスタムフィールドグループを読み込む
//--------------------------------------
$feed_group = SCF::get( '★グループ名' );
if (count($feed_group) > 0) {
	foreach($feed_group as $feeds) {
		//--------------------------------------
		// カスタムフィールドを読み込む
		//--------------------------------------
		$feed_title = $feeds['★タイトル'];
		$feed_url = $feeds['★フィードのURL'];
		
		//--------------------------------------
		// feedを読み込む
		//--------------------------------------
		include_once(ABSPATH . WPINC . '/feed.php');
		$rss = fetch_feed($feed_url); // ★フィードのURL
		if (!is_wp_error( $rss ) ) {
			$max = $rss->get_item_quantity(10); // 表示する記事の件数
			$rss_items = $rss->get_items(0, $max);
		}
?>

<h3><?php echo $feed_title; ?></h3>
<ul>

<?php
		if ($max == 0) {
			echo '<li>フィードがありません</li>';
		} else {
			date_default_timezone_set('Asia/Tokyo');
			foreach ( $rss_items as $item ) {
				$item_title = $item->get_title();
				// 文字を丸める
				$item_title = mb_strimwidth($item_title, 0, 40, "...", "UTF-8");
?>
<li>
  <a href="<?php echo $item->get_permalink(); ?>" target="_blank">
    <?php echo $item_title; ?>
  </a>
</li>

<?php
			}
		}
	}
}
?>