私はエンドポイント/wp-json/wp/v2/posts/{id}
を使って投稿を取得できることを知っています。
私はJSON APIとそのエンドポイントに完全に依存するWordPressの実装を構築しています。これはAngular SPAの実装です。つまり、API経由でリクエストが行われたときにフックを起動する必要があります。
そのため、投稿のビューを記録したい場合は、 'posts_selection'
を使用したいと思いました。私の最初の質問は、選択が/wp-json/wp/v2/posts/{id}
によって行われた場合、これが起こるかどうかです。
私の2つ目の質問は、投稿に対するAPIクエリ中に起動する別のフックまたは何かがあるのですが、それは投稿の{id}
を私の関数に渡すのでしょうか。
私がこれをすると:
function check_assembled_query( $query ) {
var_dump( $query );
}
add_action( 'posts_selection', 'check_assembled_query' );
$query
に必要な情報がありません。次のようなワークフローをお願いします。
/wp-json/wp/v2/posts/{id}
を使用して投稿をリクエストしてください。update_post_meta()
を使用して投稿のビューのメタフィールドを繰り返すようにします。これには投稿id
が必要です。 編集: post_selection
はREST APIに対しては起動しません。
function check_assembled_query( $query ) {
var_dump( $query );
die();
}
add_action( 'posts_selection', 'check_assembled_query' );
JSON APIへのリクエストではなく、通常のリクエストでのみダンプを取得します。
私の最初の答えはすべて間違っていたので、完全に削除されました。
posts_selection
フックもwp
フックも、REST API要求中には起動されません。
あなたが必要とするフックはrest_pre_echo_response
です。このフックは3つのパラメータを渡します。
投稿IDが必要なので、次のようなことができます。
add_action( 'rest_pre_echo_response', function( $response, $object, $request ) {
//* Get the post ID
$post_id = $response[ 'id' ];
//* Make sure of the post_type
if( 'post' !== $response[ 'post' ] ) return;
//* Do something with the post ID
}, 10, 3 );