I am able to create posts on my WordPress website using it’s REST API with the below curl request format. Website uses basic auth plugin for the authentication process.
curl --user "username:password" -X POST -i https://mywebsite.com/wp-json/wp/v2/posts?title=myTitle&content=MyContent
However, my problem is I need to set custom fields of the post when creating a post using REST API. I tried to send data as a JSON body using the below command and it didn’t work. It just returns all the posts without creating a new post and also without giving any error.
curl --user "username:password" -X POST -i https://mywebsite.com/wp-json/wp/v2/posts -d '{"title":"NEw tiitle"}'
I have tried sending post creation requests to my website using the Postman service also and the same thing happened. Could anyone please help me to solve this problem? Thanks in advance!
Answers:
Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.
Method 1
That’s strange, but nonetheless, you should know that whether you use cURL, PHP, JS, etc., if you’re sending a JSON data, then you should set the Content-Type header to application/json.
And via the cURL command line, you can use the -H option:
curl --user "username:password" -X POST
-H "Content-Type: application/json"
-i https://example.com/wp-json/wp/v2/posts
-d '{"title": "foo bar", "content": "test"}'
Also, if you’re using Windows, you may need to use the double quotes instead of single quotes with the -d option. So the above would be: ( note I used the caret (^) symbol and not backslash )
curl --user "username:password" -X POST ^
-H "Content-Type: application/json" ^
-i https://example.com/wp-json/wp/v2/posts ^
-d "{"title": "Windows test", "content": "test"}"
All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0