워드프레스를 자동 포스팅 하는 방법에 대해서 소개 드립니다.
파이썬을 이용해서 자동 포스팅하는 글은 많이 있는데 PHP 를 이용한 방법은 자세히 설명된 글이 없어서 PHP 를 이용해서 자동 포스팅 하는 방법에 대해서 소개 합니다.
API를 이용해서 자동 포스팅을 할때는 업로드용 사용자를 생성해서 작업하시는게 좋습니다.
아이디와 비밀번호도 별도로 하나 만들어서 작업하도록 하겠습니다.
업로드용 사용자 생성
사용자 -> 새로추가 에서 새로운 사용자를 추가해 줍니다.
역할은 관리자로 해 주셔야 합니다.
어플리케이션 비밀번호 생성하기
워드프레스 관리자 화면에 들어갑니다.
모든 사용자 메뉴를 클릭 한 후 방금 만든 사용자명을 클릭 합니다.
그럼 아래와 같은 응용프로그램 비밀번호를 입력하는 항목이 나옵니다.
이제 비밀번호가 아래 뜹니다.
비밀번호 형식은
아래와 같은 형식으로 되어 있습니다.
gwrK QRmB XXX XXXX O4e1 z8sA
비밀번호 항목은 잘 메모해서 기억해 주세요.
만약 비밀번호를 잊어버리면 다시 새응용프로그램을 생성하시면 됩니다.
public function autoWrite()
{
$WP_URL = 'https://xxx.co.kr/wordpress/'; // 자신의 워드프레스 주소
$WP_USERNAME = 'userId'; // 워드프레스 사용자이름
$WP_PASSWORD = 'password'; // 어플리케이션 비밀번호
$status = 'publish'; // 즉시발행: publish, 임시저장: draft
$slug = 'auto-post-rest-api-test'; // 슬러그를 입력하세요
$title = '워드프레스 자동포스팅'.rand(1, 10000); // 글의 제목(랜덤으로 생성)
$content = "<h1>h1테그</h1><h2>h2테그</h2><div class='featured-image page-header-image-single'>
<img loading='lazy' width='984' height='1014'
src='https://img.buzzfeed.com/buzzfeed-static/static/2024-02/20/16/asset/ed2ec7ae0396/sub-buzz-680-1708446951-3.png'>
</div>";
// 본문내용을 적을 것. html 로 적으면 된다
$category_ids = [1]; // 카테고리 아이디는 글/카테고리/ 해당카테고리에 커서를 가져가면 하다나에 카테고리 아이디값이 나온다. 숫자다
$tag_ids = [23]; // 태그아이디도 카테고리 아이디 찾는 방법과 동일
$media_id = null; // 이미지 업로드 없음
$user_ = $WP_USERNAME;
$pass_ = $WP_PASSWORD;
$payload = [
"status" => $status,
"slug" => $slug,
"title" => $title,
"content" => $content,
"date" => date("c"),
"categories" => $category_ids,
"tags" => $tag_ids
];
if ($media_id !== null) {
$payload['featured_media'] = $media_id;
}
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $WP_URL . "wp-json/wp/v2/posts");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'Content-Type: application/json'
]);
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_USERPWD, "$user_: $pass_");
$res = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
if ($res !== false && ($info['http_code'] == 200 || $info['http_code'] == 201)) {
$result = "성공 code: {$info['http_code']}";
} else {
$result = "실패 code: {$info['http_code']} reason: {$info['http_code']} msg: $res";
}
plog($result);
}
카테고리, 태그 번호는 아래와 같이 카테고리에 마우스를 가져가면 아패 뜨는 주소 중 숫자를 사용하시면 됩니다.
코드 실행하기
코드를 완성 후 해당 코드를 실행하면 아래와 같이 자동 포스팅이 생성 됩니다.
해당 포스팅을 접속하면 아래 화면처럼 제목 테그와 이미지 첨부도 잘 되는것을 확인 할 수 있습니다.
자동 포스팅은 보안적인 측면에서 좋지 않기 때문에
사용하지 않을 때에는 꼭 어플리케이션 비밀번호를 삭제하시기 바랍니다.
주의사항) http 프로토콜에서는 어플리케이션 비밀번호 생성하기가 활성화 되지 않습니다.