「WordPress」の版間の差分
Gnusocialjp (トーク | 投稿記録) 細編集の要約なし |
Gnusocialjp (トーク | 投稿記録) (Restriction) |
||
53行目: | 53行目: | ||
「[https://web.gnusocial.jp/post/2024/01/03/9746/ プラグイン: WordPressの広告ブロッカー対策CHP Ads Block Detector | GNU social JP Web]」の通り、簡単にできた。 | 「[https://web.gnusocial.jp/post/2024/01/03/9746/ プラグイン: WordPressの広告ブロッカー対策CHP Ads Block Detector | GNU social JP Web]」の通り、簡単にできた。 | ||
== Paid Memberships Pro == | == Paid Memberships Pro == | ||
=== About === | |||
PMPro。有料会員サービスを実現するプラグイン。 | PMPro。有料会員サービスを実現するプラグイン。 | ||
* [https://www.paidmembershipspro.com/documentation/advanced/ Advanced Developer Topics: Security, Caching, Redirection & More] | |||
* [https://www.paidmembershipspro.com/hooks-filters/ Paid Membership Pro Action and Filter Hooks] | |||
* [https://github.com/strangerstudios/paid-memberships-pro/tree/master/includes paid-memberships-pro/includes at master · strangerstudios/paid-memberships-pro] | |||
ソースコード内のincludes配下の関数は自分でも使用可能。 | |||
=== Single === | === Single === | ||
84行目: | 92行目: | ||
既存会員に対しては、更新ではなく、期限を設けて強制的に一度退会させるのがいい。 | 既存会員に対しては、更新ではなく、期限を設けて強制的に一度退会させるのがいい。 | ||
=== | === Restriction === | ||
==== membership short code ==== | |||
Ref: [https://www.paidmembershipspro.com/forums/topic/hide-bottom-register-form-when-it-has-membership-code-block/#post-545667 Hide bottom register form when it has membership code block]. | Ref: [https://www.paidmembershipspro.com/forums/topic/hide-bottom-register-form-when-it-has-membership-code-block/#post-545667 Hide bottom register form when it has membership code block]. | ||
100行目: | 110行目: | ||
ソースコードを参考に自分で実装するしかないだろう。 | ソースコードを参考に自分で実装するしかないだろう。 | ||
==== message ==== | |||
「[https://www.paidmembershipspro.com/customizing-the-message-for-non-members-on-membership-protected-content/ Custom Message for Non-Members on Protected Content]」に基本的な表示内容やスタイルの設定方法がある。 | |||
<nowiki><div class="pmpro_content_message"></nowiki> | |||
//custom message here | |||
<nowiki></div></nowiki> | |||
表示部分は上記要素になるのでこのクラスでスタイルをあてる。<syntaxhighlight lang="css"> | |||
.pmpro_content_message { | |||
background: #F1F1F1; | |||
margin: 0 auto; | |||
max-width: 700px; | |||
padding: 15px; | |||
} | |||
</syntaxhighlight>他に以下のフィルターが該当するメッセージ表示。 | |||
* add_filter( 'pmpro_non_member_text_filter', 'my_pmpro_non_member_text_filter', 5 ); | |||
* add_filter( 'pmpro_not_logged_in_text_filter', 'my_pmpro_not_logged_in_text_filter', 5 ); | |||
例えば、会員限定の文字数表示などをしたければ、自前でやるしかない。基本は自分で上記フィルターで上書きするのがよい。 | |||
例<syntaxhighlight lang="php"> | |||
function my_pmpro_non_member_text_filter( $text ) { | |||
global $post, $post_membership_levels_names; | |||
$count = mb_strlen( $post->post_content, 'UTF-8' ) - mb_strlen( get_the_excerpt(), 'UTF-8' ); | |||
$access = pmpro_has_membership_access( $post->ID, null, true ); | |||
$text = "<p>残り{$count}文字。続きは" . implode( '/', $access[2] ) . '会員限定。</p><p>Free=0/Bronze=220/Silver=1100/Gold=2200円。</p>' | |||
. '<p><a href="https://web.gnusocial.jp/member/level/">会員登録</a>/' | |||
. '<a href="//web.gnusocial.jp/member/login/">ログイン</a> (<a href="//web.gnusocial.jp/about/member/">About Member</a>)。</p>'; | |||
return $text; | |||
} | |||
add_filter( 'pmpro_non_member_text_filter', 'my_pmpro_non_member_text_filter', 5 ); | |||
add_filter( 'pmpro_not_logged_in_text_filter', 'my_pmpro_non_member_text_filter', 5 ); | |||
</syntaxhighlight> | |||
==== Style ==== | |||
ペイウォール (.pmpro_content_message) のスタイルは会員登録の誘発に重要。 | |||
* [https://note.com/ririkodiary/n/n74cb67fecd7f 自分だけの強みを見つけて一生働く選択を〜ミドルエイジの生き方を見つめ直す〜|暮らしのつづり帖/梨田莉利子] | |||
* [https://yoikoarinoshinya.hateblo.jp/entry/wakate-geinin 僕の若手時代の悪行。 - 有野晋哉(よゐこ)個人ブログ] | |||
有名サービスの例は上記。登録・購入ボタンを大きく押しやすくしている。a要素の他button要素でも実装されている。ここはいろいろ考えてもいいかもしれない。 |
2024年2月5日 (月) 00:37時点における版
About
WordPressは世界の多くのウェブサイトで使用されているCMSだ。PHPで記述されている。
WordPressの外観や挙動はPHPのプログラムを書いてカスタマイズできる。また、プラグイン機構を持ち、世界中の開発者によるプラグインを導入することで簡単にウェブサイトを拡張できる。
Install
WordPress.comなどのホスティングサービスを使用することもできるが、レンタルサーバーやVPSに設置することが好ましい。
ActivityPub
WordPressはActivityPubを実装している。WordPressへの投稿時に分散SNSにも投稿される、分散SNSからWordPressの投稿にコメントできるなどの機能がある。
WordPressの公式ホスティングサービスであるWordPress.comもActivityPubに対応している。分散SNSの中でも巨大なサーバーと言え、無視できない存在だ。
Function
Comment
Ref:
- コメントフォームの項目の文言変更と削除 | immature
- WordPress のコメントフォームを functions.php を使ってカスタマイズする
- comment_form() – Function | Developer.WordPress.org
このあたりの関数で定義されている。フィルターを挟むことで変更できる模様。
Language
WordPressで多言語対応サイトも構築できる。
情報源:
いろいろ方式があるが、サブディレクトリー形式が手軽な感じがする。
英語で情報発信できると、かなりの数のユーザーにアプローチできる。単に機械翻訳にするだけでも検討する価値はあるだろう。
広告ブロッカー対策
出典: 【WordPress編】広告ブロッカーからサイトコンテンツと収益を守る! | SEの良心。
[CHP Ads Block Detector] というプラグインで実現できるらしい。
「プラグイン: WordPressの広告ブロッカー対策CHP Ads Block Detector | GNU social JP Web」の通り、簡単にできた。
Paid Memberships Pro
About
PMPro。有料会員サービスを実現するプラグイン。
- Advanced Developer Topics: Security, Caching, Redirection & More
- Paid Membership Pro Action and Filter Hooks
- paid-memberships-pro/includes at master · strangerstudios/paid-memberships-pro
ソースコード内のincludes配下の関数は自分でも使用可能。
Single
単体記事の販売には工夫が必要。
- Sell Paid Newsletters on WordPress
- Sell Single Courses using LearnDash and PMPro
- Paid Memberships Pro Integration with WooCommerce – WordPress plugin | WordPress.org
- Paid Memberships Pro for Selling Courses
WooCommerceと連携したり、PMProの有料プラグインを使うとか。他にも方法を以前調査したの後日追記する。
理想としては、単品販売と、会員を両立したい。2個以上買うなら会員のほうがいいみたいな。
Style
「Custom Message for Non-Members on Protected Content」でペイウォールの表示内容・スタイルを制御できる。
金額変更
定期購読で販売していて、登録後に金額を変更したいことがある。
- How to raise prices on recurring memberships? | WordPress.org
- Change Plan price | WordPress.org
- How to to when member already paid ? | WordPress.org
- Change membership level for next payment in recurring subscription | WordPress.org
これは基本的にできない。定期購読は決済サービス側で登録時の金額で固定されるため。
金額を変更したければ、一度キャンセルして、再度チェックアウト・購入してもらうしかない。
既存会員に対しては、更新ではなく、期限を設けて強制的に一度退会させるのがいい。
Restriction
membership short code
Ref: Hide bottom register form when it has membership code block.
Source: paid-memberships-pro/shortcodes/membership.php at dev · strangerstudios/paid-memberships-pro
PMProの基本的なコンテンツ制限の概念がある。
基本は投稿全体を非表示で、excerptで冒頭部分を一部表示これが基本。membershipショートコードはこの逆で、基本全表示で一部だけ非表示。
そもそも仕組みが違う。
だから、カテゴリーで管理していて、一部だけ非表示にしたかったら、末尾にmoreブロックを配置して、membeshipショートコードも使う必要がある。二重に使わないといけない。けっこう面倒くさい。
「Custom Message for Non-Members on Protected Content」がメッセージの変更方法。ただ、制限のロジックを変更できるわけではない。別のフィルターだと思う。
ソースコードを参考に自分で実装するしかないだろう。
message
「Custom Message for Non-Members on Protected Content」に基本的な表示内容やスタイルの設定方法がある。
<div class="pmpro_content_message"> //custom message here </div>
表示部分は上記要素になるのでこのクラスでスタイルをあてる。
.pmpro_content_message {
background: #F1F1F1;
margin: 0 auto;
max-width: 700px;
padding: 15px;
}
他に以下のフィルターが該当するメッセージ表示。
- add_filter( 'pmpro_non_member_text_filter', 'my_pmpro_non_member_text_filter', 5 );
- add_filter( 'pmpro_not_logged_in_text_filter', 'my_pmpro_not_logged_in_text_filter', 5 );
例えば、会員限定の文字数表示などをしたければ、自前でやるしかない。基本は自分で上記フィルターで上書きするのがよい。
例
function my_pmpro_non_member_text_filter( $text ) {
global $post, $post_membership_levels_names;
$count = mb_strlen( $post->post_content, 'UTF-8' ) - mb_strlen( get_the_excerpt(), 'UTF-8' );
$access = pmpro_has_membership_access( $post->ID, null, true );
$text = "<p>残り{$count}文字。続きは" . implode( '/', $access[2] ) . '会員限定。</p><p>Free=0/Bronze=220/Silver=1100/Gold=2200円。</p>'
. '<p><a href="https://web.gnusocial.jp/member/level/">会員登録</a>/'
. '<a href="//web.gnusocial.jp/member/login/">ログイン</a> (<a href="//web.gnusocial.jp/about/member/">About Member</a>)。</p>';
return $text;
}
add_filter( 'pmpro_non_member_text_filter', 'my_pmpro_non_member_text_filter', 5 );
add_filter( 'pmpro_not_logged_in_text_filter', 'my_pmpro_non_member_text_filter', 5 );
Style
ペイウォール (.pmpro_content_message) のスタイルは会員登録の誘発に重要。
有名サービスの例は上記。登録・購入ボタンを大きく押しやすくしている。a要素の他button要素でも実装されている。ここはいろいろ考えてもいいかもしれない。