カテゴリー [ WordPress関連 ] の投稿一覧

WordPress 関連する記事を表示させるプラグイン Yet Another Related Posts Plugin (YARPP)

2012-10-31

当ブログの投稿数が少し増えてきたので、関連記事を表示するプラグインを導入しました。

WordPressで関連記事を表示させるプラグインは幾つかありますが、
今回使用したのは「Yet Another Related Posts Plugin(YARPP)」です。

インストール方法と注意事項をメモしておきます。
設定方法が少し複雑なので、結構ハマる人もいるかと思います。
という事で、ちょっと解説を丁寧に書きました。

いずれにしても使いながらチューニングが必要ですね。
挑戦する方は頑張って下さいー


ダウンロード先

Yet Another Related Posts Plugin

インストール方法

1) ダウンロードしたファイルを解凍し、「wp-content/plugins」フォルダへアップします。
2) WP管理画面からプラグインを有効化

設定方法

1) 非表示になっている設定項目を全て表示させます。
 「表示オプション」→「フィルター設定」「関連スコア設定」にチェックを入れる。

2) データベースのテーブルが「MyISAM」でない場合、下記の警告が表示されます。
 警告が出た場合はボタンをクリックします。

このオプションを使用したければ、wp_postsテーブルに対してこのようなクエリを実行してください:ALTER TABLE `wp_posts` ENGINE = MyISAM;。このクエリはデータは一切消しません。
wp_postsテーブルが絶対MyISAMを使用していると思う方はこちらの魔法のボタンをどうぞ:嘘じゃないから

  これでうまくいかないと、下記の警告が表示されます。

YARPPのデータベースに修正できないエラーが発生しました。Please try manual SQL setup.

  この警告が出てしまった場合はデータベースを直接修正します。
  一度プラグインを無効にし、wp_postテーブルのストレージエンジンを「MyISAM」に変更して下さい。
  その後プラグインを有効にすればOK。

  ※MyISAM、InnoDBはいずれもメリット・デメリットがあります。
   「DBを管理しているが、この辺の事はよく分からない」といった場合には、
   変更しても良いかとは思います。
   この辺の話は技術的に高度な話になるので、
   活用できる知識が無いとどちらのメリットもあまり享受できないからです。
   InnoDBにこだわる方は、残念ながらこのプラグインは使用できません。

3) フィルタ設定をします。

このカテゴリーの記事を表示しない
関連記事のリンクに含めたくないカテゴリを選択します。
パスワードで保護されている記事も表示
パスワード保護された投稿を含めたくない場合にはチェック。
過去◯ヶ月の記事だけ表示
リンクに含める投稿の期間を指定。

3) 関連スコア設定をします。

表示する最低関連スコア
最初から数字を大きくすると、関連記事無しという事で該当無しになります。
小さい数字からはじめるのがおすすめ。
タイトル~タグ
表現が分かりづらいですが、「検討」を「考慮」と読み替えると理解しやすいです。
関連しているかどうかを算出するのに、どの項目を考慮するのか、という事です。
全ての投稿タイプの結果を表示
これはそのままの意味
過去の記事だけを表示
これはそのままの意味

4) 表示設定 ウェブサイト用 の設定をします。

自動的に関連記事を表示する
チェックを入れると、投稿ページに自動挿入されます。
チェックを入れない場合はテンプレートファイルに「related_posts();」を挿入
一度に表示する関連記事数
記事数を指定
関連記事表示を囲むタグ・各関連記事を囲むタグ
自動出力されるHTMLをここで加工できます。
抜粋を表示?
抜粋表示を使用している場合のみ利用可能
表示順番
関連記事リンクの表示順を選びます。このプラグインを使うからには「関連スコアの高い順」がノーマルかと思います。
関連記事がない時のメッセージ
フィルタ設定や関連スコア設定次第では該当記事が無い場合があります。
その時に表示するメッセージです。HTML使用可能。

5) 表示設定 RSS/Atom用 の設定をします。

自動的にフィードで関連記事を表示する
RSSにも関連記事のリンクを追加するにはチェック(RSSを無効にしている場合は設定不要)

ページナビゲーション(改ページ)を追加できるプラグイン|WP-PageNavi

2012-10-30

WordPressは投稿をどんどん追加していくシステムなので、投稿の一覧ページがあるのが通常です。
そして一覧ページには改ページが必要ですよね。

改ページは自分で実装すると意外と大変なので、プラグインを使うのが良いです。
今回は改ページの定番プラグイン「WP-PageNavi」をご紹介。


ダウンロード先

WP-PageNavi


インストール方法

1) ダウンロードしたファイルを解凍し、「wp-content/plugins」フォルダへアップします。

2) WP管理画面からプラグインを有効化すればOK


設定方法

このプラグインは有効化しただけではページに反映されません。
ページに反映するにはテンプレートファイルにコードを挿入する必要があります。

改ページを表示したい場所にこのようなコードを挿入します。

<?php wp_pagenavi(); ?>

するとこのようなHTMLが出力されます。
<div class='wp-pagenavi'>
	<span class='pages'>1 / 3</span><span class='current'>1</span>
	<a href='http://xxxxx/page/2' class='page larger'>2</a>
	<a href='http://xxxxx/page/3' class='page larger'>3</a>
	<a href='http://xxxxx/page/2' class='nextpostslink'>&raquo;</a>
</div>
※本当はこんな綺麗にインデントされてませんが、説明の都合上、見やすく整形しています。

簡単ですね。
HTMLの各要素にはクラスが割り振られていますので、CSSでデザイン変更もしやすいです。
プラグインフォルダの中にあるcssファイルを修正するか、別のcssファイルでスタイルを上書きしてもOK。

このプラグインはよく使うのですが、
凝ったカスタマイズをしていると、うまく動いてくれなかったりしますので、
導入してみてサクッと動かない場合はちょっと苦戦するかもしれません。
その辺の話はまた改めて記事にしたいと思います。

トップページの条件分岐方法を改めて検証してみました

2012-10-16

WordPressのトップページのテンプレートファイルは home.php、index.php あたりを使用する場合が多いと思います。

その場合、header.phpでトップページ用の条件分岐をする必要が出てきます。
(もちろん、必要ない場合もあります)
この条件分岐のタグはどれが適しているのか、という点について改めて検証をしてみました。

トップページ(フロントページ)の条件分岐に使えるテンプレートタグ

is_home()
is_front_page()
is_page()


何もカスタマイズをしていない場合、WordPressのトップページ独自のコンテンツは管理画面側で管理できませんが、固定ページをトップページ(フロントページ)として割り当てる事が可能です。


フロントページの変更方法

管理画面 -> 設定 -> 表示設定 -> フロントページの表示 でトップページにしたい固定ページを選択すればOK。
※固定ページが1つも無い場合は「フロントページの表示」が表示されないのでご注意を。


条件分岐タグの検証結果

さて、本題に戻ります。
フロントページをデフォルト設定の場合、固定ページを設定した場合で、条件分岐タグはどのような結果を返すのかを検証しました。
結果は下記の通り。
テンプレートタグ フロントページ設定無し フロントページとして固定ページを設定
is_home() true false
is_front_page() true true
is_page() false true
is_front_page() が万能です。フロントページの条件分岐にはやはり is_front_page() が良いですね。
しかし、is_home() にもメリットがあります。home.php というテンプレートファイルとネーミングが揃っていてわかりやすいです。
ケースバイケースでご利用下さいませ。

WordPress管理画面の固定ページ一覧にスラッグを表示すると便利

2012-10-11

WordPressをカスタマイズすればするほど、管理画面が使いにくくなっていきます。
特にそう思う時は、投稿や固定ページのタイトル、本文、スラッグ、カスタムフィールドなどにプログラム的な意味を持たせている場合。

元々ブログシステムなので、最低限の項目しか表示されないのは当然といえば当然です。
しかしそこはWordPress、見やすくカスタマイズも可能です。

どんな案件でもよく使うのは「固定ページのスラッグを固定ページ一覧に表示」する事。
固定ページはスラッグをURLとして表示するケースが多く、この項目こそ管理画面に必要だと思います。


カスタマイズ方法

下のコードをfunctions.phpに追記するだけ。

function add_page_columns_name($columns) {
	$columns['slug'] = "スラッグ";
	return $columns;
}
function add_page_column($column_name, $post_id) {
	if( $column_name == 'slug' ) {
		$post = get_post($post_id);
		$slug = $post->post_name;
		echo attribute_escape($slug);
	}
}
add_filter( 'manage_pages_columns', 'add_page_columns_name');
add_action( 'manage_pages_custom_column', 'add_page_column', 10, 2);

functions.phpって何?という方もいると思いますが、その辺りの話はまた別の機会に記事を書きます。

これ、ちょっとした事ですが、とても効く技です。
URLで固定ページを選べるようになるので、
開発者だけでなく、クライアントさんにとっても便利なカスタマイズですよ。

WordPressのスラッグが重複した場合の優先順位

2012-09-27

WordPressにはテンプレート階層という仕組みによって、
読み込まれるテンプレートファイルが自動的に決まってきます。

その振り分けに使われるのがスラッグです。
今回は「このスラッグが重複したらどうなるのか?」という話です。

スラッグは「投稿」「カテゴリ」「固定ページ」「タグ」に設定できます。

振り分けに使われるので「基本的に」WordPress内でスラッグは重複できません。
重複したスラッグを登録しようとするとWordPressに勝手にリネームされますので、
想定外のスラッグにされる前にスラッグは重複させない、ということが重要です。
(後で苦労する事を考えたら、安いものです)

先ほど「基本的に」重複できない、と書いたのは、実は例外があるからです。
例外とは「カテゴリと固定ページのスラッグは重複可能」という点。

重複するとどうなるのか。

パーマリンク設定次第では、スラッグがURLに使われますので、
重複したカテゴリページと固定ページのURLが同一になるケースがあります。
その場合、カテゴリページが優先されます。

category-sample.php と page-sample.php があり、
これを呼び出すURLが同一の場合、「page-sample.php」はずっと呼ばれないままです。

忘れてるとハマるので、注意したいですね。
私も過去にハマった事がありますw

固定ページが呼ばれない事を逆手にとる方法もあります。

category-sample.php はカテゴリ一覧ページなので、
このページ独自のコンテンツを登録する場所がありません。
(=カテゴリ一覧ページ用の投稿とか無いので)

つまり、同じスラッグの固定ページを用意しておいて、
カテゴリー一覧ページにもWordPress管理画面からコンテンツの管理が可能なように仕込む、
という裏ワザが可能です。
具体的には category-sample.php の中で、同じスラッグ名でget_pageします。

あまりおすすめできませんが、WordPressのコアファイルを修正したりするよりはスマートでは無いかと思います。