바닐라 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.html 및 docs.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.