Chiramiseのカスタマイズ方法
カスタマイズ方法
カスタマイズのよくある方法を以下に挙げておきます。
注意: ドキュメントは整備中です。完成するまでしばらくお待ち下さい。
ケース1: 権限を変更する
デフォルトの権限はreadです。ここではあなたがBuddyPressのようなフォーラムを持っていて、熱心なユーザーをVIPだと認識していると仮定しましょう。
この場合、問題は「誰が熱心なのか?」ということになります。ここでは「直近一週間で10件のコメントを投稿したユーザー」と定義しておきましょう。
戦略は次の通りです。カスタム権限をvigorous_contributorとし、Chiramiseのデフォルト権限を上書きします。
<?php
add_filter('chiramise_capability', function($capability){
return 'vigorous_contributor';
});
これでChiramiseはあなたの戦略を理解しました。しかし今のところ、このvigorous_contributorという権限を持つ人はいません。map_meta_capフィルターを利用して、これを割り当てましょう。関数is_vigorous_user はすでに定義済みだと仮定します。
<?php
add_filter('map_meta_cap', functoin($caps, $cap, $user_id){
switch( $cap ){
case 'vigorous_contributor':
if ( is_vigorous_user( $user_id ) ) {
$caps[] = 'read';
} else {
$caps[] = 'do_not_allow';
}
break;
}
return $caps;
}, 10, 3);
ようやくあなたのVIPはその貢献に応じた扱いを受けることができるようになりました。これは少し遠回りに思えるかもしれません。しかし、WordPressの権限システムに則ることで、他のプラグインがそれを参照することができるのです!
ケース2: 説明を表示する
デフォルトだと、Chiramiseはコンテンツが制限されているのかそうでないのかについて何も表示しません。これは私達が怠けたからではなく、なにをすべきかの説明があなたの取る戦略によって異なるからです。
ここでは何かを表示する方法だけを説明します。なにを表示するかはアナタ次第です。
コンテンツとユーザーを判断するために役立つ2つの関数があります。
chiramise_should_check( $post )は指定された投稿が権限をチェックする必要があるかを返します。これは投稿が<!--more-->や<!--nextpage-->のような区切り文字を含んでいるかで判定します。
続いて、chiramise_can_read($post, $user)は指定されたユーザーが投稿を読むために必要な権限を持っているかを返します。
どちらの関数もループに対応しています。したがって、現在の投稿に対する現在のユーザーの権限をチェックしたいのであれば、引数を渡す必要はありません。
<?php if ( chiramise_should_check() && ! chiramise_can_read() ) : ?>
<!-- This post is limited but user has no capability. -->
<p>
You have to <a href="<?php echo wp_login_url(get_permalink()) ?>">login</a> to read the rest of content.
</p>
<?php endif; ?>
このサイトでは、権限を持たないユーザーに対してログインするよう表示しています。
もしユーザーがWooCommerceでチケットを買う必要があるならば、そのためのリンクを表示すべきでしょう。
