WP_REST_Request에서 쿼리 매개 변수에 액세스할 수 없는 이유는 무엇입니까?
블로그에서 아약스를 사용하여 더 많은 기사를 로드하기 위해 엔드포인트를 생성하려고 합니다.하지만 쿼리 문자열 매개 변수가 제 기능으로 전달되지 않는 것 같습니다.여기 제 코드가 있습니다. 모든 코드가 있습니다.function.php
파일:
add_action( 'rest_api_init', function () {
register_rest_route( 'blog', '/articles', array(
'methods' => WP_REST_Server::READABLE,
'callback' => 'load_more'
));
});
function load_more(WP_REST_Request $request) {
var_dump($request->has_valid_params());
var_dump($request->get_params());
var_dump($request);
}
그리고 이것은 내가 전화를 걸 때 반환되는 것입니다./wp-json/blog/articles/?lang=en&tag=test
:
bool(true)
array(0) {}
object(WP_REST_Request)#2259 (8) {
["method":protected]=>
string(3) "GET"
["params":protected]=>
array(6) {
["URL"]=>
array(0) {
}
["GET"]=>
array(0) {
}
["POST"]=>
array(0) {
}
["FILES"]=>
array(0) {
}
["JSON"]=>
NULL
["defaults"]=>
array(0) {
}
}
["body":protected]=>
string(0) ""
["route":protected]=>
string(14) "/blog/articles"
["attributes":protected]=>
array(6) {
["methods"]=>
array(1) {
["GET"]=>
bool(true)
}
["accept_json"]=>
bool(false)
["accept_raw"]=>
bool(false)
["show_in_index"]=>
bool(true)
["args"]=>
array(0) {
}
["callback"]=>
string(9) "load_more"
}
["parsed_json":protected]=>
bool(true)
["parsed_body":protected]=>
bool(false)
}
마치 제 기능에 도달하기 전에 요청 개체에서 매개 변수가 삭제된 것과 같습니다.
다음을 통해 쿼리 매개 변수에 액세스할 수 있습니다.WP_REST_Request::get_query_params()
:
$queryParams = $request->get_query_params();
$tag = $queryParams['tag'];
또는 사용할 수 있습니다.
$tag = $request->get_param('tag');
하지만 그것은 합쳐집니다.$_POST
,$_GET
경로 매개변수를 순서대로 표시합니다.
POST REQUEST를 통해 일부 값을 전달하는 경우 다음을 사용하여 액세스할 수 있습니다.get_body_params()
방법
add_action( 'rest_api_init', function () {
register_rest_route( "nh", "v2/slug", array(
'methods' => 'POST',
'callback' => 'my_awesome_func',
) );
} );
function my_awesome_func( $request ) {
$queryParams = $request->get_body_params();
return $queryParams;
}
개체 속성이 보호되므로 표준 방법을 사용하여 개체 속성을 가져올 수 없습니다. 액세스하려고 해도 다음과 같은 문제가 발생합니다.Fatal Error
.
하지만 저는 먼저 객체를 배열로 변환한 다음 각 항목을 루프하여 필요한 것을 얻음으로써 값에 접근하려고 했습니다.
WP_REST_Request $request;
$request2 = (array)$request;
foreach($request2 as $req2) {
if (is_array($req2)) {
foreach($req2 as $req2_k => $req2_v) {
if ($req2_k == 'cpt') {
echo $req2_v;
}
}
}
}
보다시피, 저는 당신이 원하는 것을cpt
로부터의 가치.attributes
배열 인덱스, 루프를 원하는 대로 조정해야 합니다.
언급URL : https://stackoverflow.com/questions/52299874/why-cant-i-access-the-query-params-from-wp-rest-request
'programing' 카테고리의 다른 글
개체를 인코딩하는 동안 MongoDB BSON 코덱이 사용되지 않습니다. (0) | 2023.07.07 |
---|---|
MongoDB 속성 이름을 줄일 가치가 있습니까? (0) | 2023.07.07 |
github에서 "실제" 커밋 날짜/시간 참조(시간/일) (0) | 2023.07.07 |
SQL Server에서 두 날짜 사이의 모든 날짜 가져오기 (0) | 2023.07.07 |
vuex 가입자의 메서드를 어떻게 감시합니까? (0) | 2023.07.02 |