この記事はブロックされています。続きを読みたい方はログインをして下さい。会員ではない方は新規会員登録をして下さい。


ワードプレスを使って無料で作る 会員制ポイントサイトの作り方 第三回 ポイント増減のタイミング

前回、「CubePoints」のポイント増減の方法を学びました。ポイント増減は解決したとして、今度はいつ増やすか? というタイミングです。というわけで、今回は「WP-Members」側の処理です。

ワードプレスのプラグイン「WP-Members」は記事内に「More」タグがあると会員限定記事としてブロックしてくれます。
やりたいことは会員限定記事をポイントを使って読むことです。

なので単純に考えると、通常の記事を閲覧する場合はポイントは変化しない。会員限定記事を読む場合だけポイントが変化する、という処理となります。

そこで「会員限定記事を読む」というイベントを操作してみます。
操作するには×ツイッターによる無料でできるオートブログ 第十四回目 apply_filters()関数でプラグインをカスタマイズする方法」でもやった「apply_filters()関数」を利用します。

▼ワードプレス×ツイッターによる無料でできるオートブログ 第十四回目 apply_filters()関数でプラグインをカスタマイズする方法

ワードプレス×ツイッターによる無料でできるオートブログ 第十四回目 apply_filters()関数でプラグインをカスタマイズする方法

問題は「WP-Members」「apply_filters()関数」が用意されているかです。
これが用意されていないとちょっと面倒なことになります。調べるために「WP-Members」の作者さんのサイトを探ってみます。
すると親切なことに解説ページがありました。

▼WP-Members Filter and Action Hooks

には「wpmem_block」という関数が用意されており使えそうです。
この関数はブロックされているかどうかを調べるための単純な関数です。
「$block」という変数を受け取り、返します。
値は1または0を返してくれます。値が1の場合は「ブロック記事」で0の場合は「通常記事」ということになります。

作者さんのサイトにはサンプルコードもありました。

add_filter( 'wpmem_block', 'my_block_function' );
function my_block_function( $block )
{
	/**
	 * The plugin tests for pages and posts
	 * to be blocked or unblocked based on 
	 * the plugin's settings, then tests for
	 * custom field overrides, then sends the
	 * $block value to the wpmem_block filter.
	 *
	 * You can return the value unchanged, or
	 * test for any number of criteria and
	 * return that result.
	 *
	 * The value comes in as a true/false
	 * boolean and you must return a true/false
	 * boolean.
 	 */

	return $block;
}

上記のコードをどこに書くかというとインストールしているテーマフォルダにある「functions.php」に記述します。
もし私が作ったオリジナルのテンプレートを使っている場合は以下のような場所になります。

wp-content/themes/mhs/

「functions.php」の中身は人によって千差万別です。一緒ではありません。
とりあえずコードを記述する場所ですが、末尾にしましょう。末尾には必ず「?>」というPHPのコードを表す記号で終わっています。コードは末尾といっても「?>」の内側に書きます。「?>」の外側に書くとPHPと認識されずエラーになります。
追加するコードは以下です。

add_filter( 'wpmem_block', 'my_block_function' );
function my_block_function( $block )
{

	return $block;
}

「functions.php」が存在しない人は、以下の内容でファイル名を「functions.php」として「UTF-8」形式で保存してください。

<?php

add_filter( 'wpmem_block', 'my_block_function' );
function my_block_function( $block )
{

	return $block;
}

?>

このままだとなにも起きません。実際に処理する内容を追加します。
処理としてはブロック記事の場合にポイントを操作すればよいことになります。
試しにブロック記事を読むとポイントが+1される処理を書いてみます。

関連記事