ワードプレスでPHPプログラムで投稿を追加する方法を解説いたします。

ワードプレスに独自のPHPプログラム経由でカテゴリー設定やカスタムフィールド追加も含めた投稿追加プログラム

ワードプレスに投稿を追加するプログラムのひな型は下記のようになります。

ini_set('mbstring.internal_encoding' , 'UTF-8');
require_once("wp-load.php");

$title = "投稿のタイトル"; //要書き換え
$content = "投稿のコンテンツのHTMLコード"; //要書き換え

//投稿を追加します
$new_post = array(
'post_title' => $title ,
'post_content' => $content,
'post_status' => 'publish',
'post_date' => date('Y-m-d H:i:s'),
'post_author' => 1,
'post_type' => 'post',
);
$post_id = wp_insert_post($new_post);

//カテゴリーを設定します
$categioryids = array(1,2,3,4); //要書き換え
wp_set_object_terms( $post_id, $categioryids, 'category' );

//カスタムフィードに値を追加します
$customfieldname = "カスタムフィールド名"; //要書き換え
$customfieldvalue = "値";//要書き換え
add_post_meta( $post_id, $customfieldname, $customfieldvalue, true );

このコードでは、まず最初の2行ini_setで文字化けを防ぐ処理と、require_onceでワードプレスの関数を利用するためのプログラムの読み込みを行い処理の下準備をしています。

※ワードプレスに含まれるコード(テーマのFunctions.phpやプラグインのコード)ではこの2行は不要です。

次にwp_insert_post 関数に投稿のタイトルやコンテンツを指定した配列を渡して投稿を追加します。

wp_set_object_termsでカテゴリーを設定し(カテゴリーIDの配列で指定します)、最後にadd_post_meta でカスタムフィールドに値を追加しています。
カテゴリーが未設定で、カスタムフィールドが不要な場合 //カテゴリーを設定します と記載がある下の部分は不要になりますね。

PHPプログラムで追加した投稿にアイキャッチ画像も設定したい

プログラム経由で投稿のアイキャッチ画像を設定するには3ステップのプログラムが必要となります。

画像の取得とワードプレスのuploadフォルダにアップロード、それをメディアに追加しID取得、そのメディアのIDを投稿と関連付けます。

$image_url = "アイキャッチ画像に設定したい画像のURL";//要書き換え

//画像をアップロードします
$upload_dir = wp_upload_dir();
$image_data = file_get_contents( $image_url );
$filename = basename( $image_url );
if ( wp_mkdir_p( $upload_dir['path'] ) ) {
     $file = $upload_dir['path'] . '/' . $filename;
}else {
     $file = $upload_dir['basedir'] . '/' . $filename;
}
file_put_contents( $file, $image_data );

//ワードプレスのメディアに画像を追加してメディアのIDを取得します
$wp_filetype = wp_check_filetype( $filename, null );
$attachment = array(
    'post_mime_type' => $wp_filetype['type'],
    'post_title' => sanitize_file_name( $filename ),
    'post_content' => '',
    'post_status' => 'inherit'
);
$attach_id = wp_insert_attachment( $attachment, $file );
require_once( ABSPATH . 'wp-admin/includes/image.php' );
$attach_data = wp_generate_attachment_metadata( $attach_id, $file );
wp_update_attachment_metadata( $attach_id, $attach_data );

//最後に先ほど追加した $post_id にメディアのIDをアイキャッチ画像として関連付けます
add_post_meta( $post_id, "_thumbnail_id", $attach_id, true );

ステップ1 画像をアップロードします

このセクションでは、 wp_upload_dir で現在のワードプレスのuploadsフォルダを取得し、そのフォルダに、空っぽのファイルを作ったのちに file_put_contents でそのファイルに画像のデータを書き込んでいます。

ステップ2 ワードプレスのメディアに画像を追加してメディアのIDを取得します

この一連のコードでは、アップロードした画像をワードプレスのメディア内の画像の一つとして登録する処理をして、そのIDを取得しています。

ステップ3 メディアのIDをアイキャッチ画像として関連付けます

ワードプレスのアイキャッチ画像は、実態は_thumbnail_id というポストメタキーに設定された、メディアのIDです。
ゆえにこのメタキーで値は先ほど取得したメディアのIDとして、投稿にadd_post_metaで設定するとアイキャッチ画像として認識される形になります。

WordPress ワードプレスのテーマやプラグインのカスタマイズ、制作のご相談・ご依頼はワードプレスドクターまでお気軽にお送りください