WordPressも知ってるの?

WordPressでRestAPI出力したデータを表示するブログを作ってるんだけど、restAPIに個別ページのページビュー数を入れて表示させたいんだけどどうやればいいかわかりますか?ページビュー数はプラグインなどで取れるけど、それをRestAPIで出力させるところまでの情報が見つかりません

WordPressでページビュー数をREST APIに追加する方法を説明します。以下の手順に従ってください。

  1. ページビュー数を取得するプラグインをインストール:
    まず、WordPressにページビュー数を取得できるプラグインをインストールし、有効化してください。一例として、「Post Views Counter」というプラグインがあります。
  2. functions.phpにカスタムコードを追加:
    次に、functions.phpファイルにカスタムコードを追加して、ページビュー数をREST APIに追加します。以下のコードは、「Post Views Counter」プラグインを使用している場合の例です。
function add_pageviews_to_api() {
    register_rest_field( 'post', 'pageviews', array(
        'get_callback' => function ( $post_arr ) {
            // $post_arr['id'] には、現在の投稿のIDが入っています。
            $post_id = $post_arr['id'];
            $pageviews = get_post_meta( $post_id, 'post_views_count', true );
            return intval( $pageviews );
        },
        'schema' => array(
            'description' => 'ページビュー数',
            'type'        => 'integer',
        ),
    ));
}
add_action( 'rest_api_init', 'add_pageviews_to_api' );

このコードは、投稿データのREST APIレスポンスに「pageviews」というキーでページビュー数を追加します。あなたのプラグインに合わせてコードを変更してください。

3.REST APIレスポンスを確認:
上記のコードをfunctions.phpに追加した後、REST APIのURL(例:https://example.com/wp-json/wp/v2/posts/1)にアクセスし、「pageviews」キーが追加されていることを確認してください。

ありがとう。プラグインを入れてAPIに「pageview」が出ているのを確認できました。ただ、このPost Views Counter というプラグインはアクセスをカウントする方法が3つあり、PHP、JS、RestAPIを使えるんだけど、WPのテーマは使ってないのだからRestAPIで取得でOK?これはRESTAPIが読み込まれたらカウントするのかな?今試しに読み込んだけど反映まで時間かかるのかな

「Post Views Counter」プラグインのカウント方法をREST APIに変更する場合、次の手順で設定を変更してください。

  1. プラグイン設定を開く:
    WordPress管理画面から、「設定」>「Post Views Counter」をクリックしてプラグインの設定ページを開きます。
  2. カウント方法を変更:
    「カウント方法」のセクションで、「REST API」を選択し、「変更を保存」をクリックします。

これで、「Post Views Counter」プラグインがREST APIでアクセスをカウントするようになります。ただし、REST APIでカウントされるのはAPIエンドポイントが直接アクセスされた場合です。通常のページ表示ではカウントされません。

カウントを適切に行うためには、フロントエンドのJavaScriptで、各ページが表示されたタイミングで、そのページのREST APIエンドポイント(例:https://example.com/wp-json/wp/v2/posts/1)を呼び出す必要があります。これにより、ページが表示されるたびにAPIエンドポイントがアクセスされ、カウントが正確に行われます。

ただし、カウントの反映には若干のタイムラグが発生することがあります。リアルタイムでの反映を求める場合、別のプラグインやカスタム実装を検討してください。

2023-03-22