바닐라 Wordpress 4.7 설치에서 Wordpress REST API가 설치되어 활성화되어 있습니까?


29

방금 Wordpress 4.7을 설치했습니다. 발표에서 언급 한 것 중 하나는 REST API가 있다는 것입니다.

내 이해는 :

  • Wordpress REST API 플러그인은 더 이상 필요하지 않습니다. 왜냐하면 Wordpress 4.7에서 이미 코어와 병합 되었기 때문입니다.
  • Wordpress REST API는 기본적으로 활성화되어 있습니다

그러나 바닐라 Wordpress 4.7 설치에서는 엔드 포인트가 작동하지 않는 것 같습니다 (예 http://examples.com/wp-json/wp/v2/posts:).

새 REST API가 실제로 활성화되었는지 어떻게 알 수 있습니까? 바닐라 워드 프레스 UI로 REST API를 활성화 또는 비활성화 할 수 있습니까, 아니면 타사 플러그인을 설치해야합니까?


1
페이지 소스에 감지 태그가 있습니까? <link rel='https://api.w.org/' href='https://example.com/wp-json/' />내 사이트에서만 작동하는 것 같습니다.
Rarst

I 경우 @Rarst, grep -r "<link rel='https://api.w.org/'" .에서 html디렉토리는 파일에서 하나 개의 히트 반환 ./wp-includes/rest-api.php이 텍스트를 :echo "<link rel='https://api.w.org/' href='" . esc_url( $api_root ) . "' />\n";

소스 코드가 아닌 브라우저의 사이트에서 페이지의 HTML 소스에 없습니다.
Rarst

1
@Rarst, 그렇습니다 나는 본다<link href="http://example.com/wp-json/" rel="https://api.w.org/">
Pep

브라우저에서 링크를 열면 무엇을 얻을 수 있습니까? WP_DEBUG가 활성화되어 있습니까?
Rarst

답변:


21

4.7은 기본적으로 활성화되어 있습니다. 작동하는지 확인하는 쉬운 방법은 example.com/wp-json url을 방문하는 것입니다. 등록 된 엔드 포인트 목록이 있어야합니다.

그것을 비활성화하는 공식 옵션은 없습니다 (적어도 릴리스에 있는지 확실하지 않은 이야기가 있습니다). 일부 핵심 기능은 그것에 달려 있습니다.

작동하지 않는지 확인하는 가장 확실한 것은 htaccess 규칙이며 wp-json 디렉토리가 있습니까?


/var/www/html하위 디렉토리 아래에 wp-json 디렉토리가 없습니다 . .htaccess파일 이없는 것 같습니다 (이외 의 파일이 /var/www/html/wp-content/plugins/akismet/.htaccess있어야합니까?
Pep

@Pep, 어떤 웹 서버를 사용하십니까? 당신은 꽤 영구적 인 관계가 있습니까?
Mark Kaplun

아파치. 이 자습서의 단계에 따라 AWS에 Wordpress 4.7을 설치했습니다. docs.aws.amazon.com/AWSEC2/latest/UserGuide/install-LAMP.htmldocs.aws.amazon.com/AWSEC2/latest/UserGuide/…
Pep

AWS에 익숙하지 않지만 바닐라 워드 프레스를 설치 한 경우 설치 루트에 .htaccess가 있어야합니다. 설정> 퍼머 링크로 이동하지 않으면 일반 설정이 아닌지 확인하고 저장 한 다음 htaccess가 생성되었는지 확인하십시오.
Mark Kaplun

6
마침내 문제를 발견했습니다. REST API가 작동하려면 Permalink가 필요하다는 것을 알지 못했기 때문에 초기 설정 중에 AllowOverride All<Directory "/var/www/html">섹션 에서 설정 단계를 건너 뛰었습니다 /etc/httpd/conf/httpd.conf. 그래서에 대한 변경 사항을 무시하고있었습니다 .htaccess. 이제 PLain 이외의 퍼머 링크로 REST API 엔드 포인트가 작동합니다.
Pep

11

4.7은 REST API가 비활성화되었다고 생각했지만 URL에 속았습니다. 올바른 URL을 보려면 다음과 같은 줄을 찾으십시오.

링크 rel = ' https://api.w.org/'href = ' http://mysite?rest_route=/'/>. 따라서 http : // mysite? rest_route = / 를 접두사로 사용하면 문제가 해결되었습니다. 예를 들어 게시물을 복구하는 것은 다음과 같이 입력하기에 충분 합니다. http : // mysite? rest_route = / wp / json

쿼리 매개 변수가 필요한 문서를 찾을 수 없습니다. 내가 유일한 사람 이었 니?


wordpress 4.8.x로 나를 위해 일했습니다. 왜 이것이 어디에도 문서화되어 있지 않은지 확실하지 않습니다.
Anirudha

2
유일한 것은 아닙니다. 10 분 검색 후 댓글에서이 답변을 찾았습니다. 할 필요가 :www.example.com?rest_route=/wp/v2/posts
유진 K

3
예쁜 퍼머 링크를 사용하지 않으면 이런 일이 발생한다고 생각합니다. 로부터 문서 ... "꽤 영구 링크없이 사이트에서 경로 대신 rest_route 매개 변수로 URL에 추가됩니다. 위의 예를 들어, 전체 URL는 것 example.com/?rest_route=/wp/v2/posts / 123 "
Giles Butler


1

문제가 해결되었지만 내 솔루션이 여기에서도 효과가 있다고 생각합니다. wp 4.7에서 beta15에서 핵심 API로 업데이트 할 때도 동일한 문제가 발생했습니다.이 문제는 changelog 에서이 메모에 따라 register_rest_field로 변경 된 더 이상 사용되지 않는 register_api_field 함수를 사용하는 플러그인이 있다는 것이 밝혀졌습니다.

변경 변경 : register_api_field ()의 이름을 register_rest_field ()로 바꾸십시오.

_doing_it_wrong ()을 호출하는 이전 버전의 compat에 대한 register_api_field () 함수를 소개합니다. 그러나 register_api_field ()는 WordPress 코어에 커밋되지 않으므로 함수 호출을 업데이트해야합니다.


1

REST API가 기본적으로 작동하지 않거나 새로 설치 한 후 및 입력 한 후

mydomain/wp-json/wp/v2/posts 

그런 다음 post_name으로 "permalinks"를 활성화해야합니다.

WP 대시 보드-> 설정-> 퍼머 링크

또는 퍼머 링크를 활성화하지 않으려면 다음을 입력하면됩니다.

mydomain?rest_route=/wp/v2/posts

WordPress가 Rest 핸드북을보다 사용자 친화적으로 업데이트하기를 바랍니다. 나는 문서의 이전 버전을 좋아한다 :)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.