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 ;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 -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!
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/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/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!
Share Improve this question asked Feb 6, 2021 at 15:09 Priyantha BuddhikaPriyantha Buddhika 133 bronze badges1 Answer
Reset to default 0That'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/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/wp-json/wp/v2/posts ^
-d "{\"title\": \"Windows test\", \"content\": \"test\"}"