source

WordPress API 오류: "죄송합니다. 새 게시물을 만들 수 없습니다."

itover 2023. 3. 13. 20:26
반응형

WordPress API 오류: "죄송합니다. 새 게시물을 만들 수 없습니다."

현재 앱 스크립트 기능을 사용하여 WordPress 사이트에 새 게시물을 추가하고 있습니다.

 var um_url = 'http://test.mywebsite.com/wp/wp-json/wp/v2/posts';
 var um_headers = { 
    "Accept" : "application/json",
    "Authorization": "Basic "+Utilities.base64Encode("user:passowrd"),
    "Content-type":"application/json"
        };

 var um_options = {  
   "method":"POST",     
   "headers": um_headers,
   "dataType" : 'json',
   "data": {
     title: "Foo title",
     content: "Foo content",
     status: "publish"
    }

    };

  var um_response = UrlFetchApp.fetch(um_url, um_options);
  var json = um_response.getContentText();
  Logger.log(json);
}

하지만 다음과 같은 오류가 발생합니다.

 {"code":"rest_cannot_create","message":"Sorry, you are not allowed to create new posts.","data":{"status":401}}

StackOverflow에 관한 다른 유사한 질문을 읽었더니.htacess불행히도, 제 문제는 해결되지 않았습니다.여기 내 것이 있다.htaccess파일

# BEGIN WP BASIC Auth
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule .* - [e=HTTP_AUTHORIZATION:%1]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>
# END WP BASIC Auth



# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
RewriteBase /
RewriteRule ^index\.php$ - [E=X-HTTP_AUTHORIZATION:%        {HTTP:Authorization},QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wp/index.php [E=X-HTTP_AUTHORIZATION:%{HTTP:Authorization},QSA,L]
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
</IfModule>

# END WordPress

누구 도와줄 사람?

REST API를 통해 무언가를 추가하려고 하는 것과 거의 같은 문제가 있었습니다.REST WP Nonce(wp_rest라는 이름)를 헤더 또는 요청 변수의 일부로 요청과 함께 전송해야 합니다.

fetch를 사용하면 이렇게 할 수 있습니다.

fetch( route, {
    method: method, 
    headers: {
        'X-WP-Nonce': wpApiSettings.nonce
    }
} )

또는 쿼리 변수에 '_wpnonce'로 추가합니다.

현재 사용자를 0으로 설정하고 있는 코드는 다음 URL에서 찾을 수 있습니다.wp-includes/rest-api.php회선 834(버전 5.2.1)

의 탓이다status: "publish"를 선택합니다.로 변경하다status: "pending"효과가 있을 거야이것은, 유저가 다음의 역할이 없는 한, 투고를 직접 퍼블리시 할 수 없기 때문에 발생합니다.author또는 그 이상입니다.

코드를 다음과 같이 변경할 수 있습니다(또는 사용자 역할 변경).author및 세트New User Default Role로.Author아래WordPress settings » General신규 사용자도 마찬가지입니다.

 var um_url = 'http://test.mywebsite.com/wp/wp-json/wp/v2/posts';
 var um_headers = { 
    "Accept" : "application/json",
    "Authorization": "Basic "+Utilities.base64Encode("user:passowrd"),
    "Content-type":"application/json"
        };

 var um_options = {  
   "method":"POST",     
   "headers": um_headers,
   "dataType" : 'json',
   "data": {
     title: "Foo title",
     content: "Foo content",
     status: "pending"
    }

    };

  var um_response = UrlFetchApp.fetch(um_url, um_options);
  var json = um_response.getContentText();
  Logger.log(json);
}

언급URL : https://stackoverflow.com/questions/38213499/wordpress-api-error-sorry-you-are-not-allowed-to-create-new-posts

반응형