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


ワードプレスで会員制ポイントサイト作るための覚え書き その3 moreタグの続きを読むがある場合に処理を分岐させる方法

  • 会員制ポイントサイトの作り方

前回はメタボックスの値を投稿保存時に反映させる方法を説明しました。
今回はmoreタグ「<!–more–>」がある投稿にセキュリティを掛ける方法です。

投稿に「<!–more–>」があるとワードプレスでは「<span id=”more-xxx”></span>」というタグが本文に追加されます。「xxx」には記事のIDが入ります。
ワードプレスのmoreタグというのはこのタグがあるところまでを抜粋で表示してくれます。ワードプレスに抜粋の設定がない場合はmoreタグまでが抜粋で表示されますが、基本設定に抜粋文字数が設定されている場合はmoreタグより優先されます。

なので通常の使い方だとmoreタグをいちいち追加するよりも、基本設定で抜粋文字列を指定していると思われます。
プラグイン「WP-Members」では本文中に「<span id=”more」という箇所が見つかればブロック記事と認識しています。
しかしmoreタグについては専用のフィルターフックがありません。

フィルターフックに「the_content」を使い、記事が表示される前に処理を行います。
「the_content」は色んなプラグインにもフックされているので、優先順位を最優先で処理します。

//本文出力前に最優先で処理する
add_filter( 'the_content', '自作関数名' , 1 , 1 );

次に条件判定です。「<span id=”more」が本文中に見つかったら記事をブロックする場合は抜粋で表示する文字列を「<span id=”more-xxx”></span>」までにします。これによってログインユーザー以外はmoreタグまでしか見られないことになります。

以下はサンプルです。テーマフォルダの「functions.php」に記述します。

関連記事