【WordPress】PHPプログラムから記事を投稿する方法(テーマのカスタマイズ)

管理画面からの投稿ではなく、自分で用意したPHPスクリプトからWordPressの記事を投稿する

wp_insert_post関数を使う。引数にオプション配列を渡す。

$post_data = array(
    'post_title' => '下書き登録 ' . date("Y/m/d H:i:s"), // タイトル
    'post_status' => 'draft', // 公開状態
    'post_category' => array(1, 2) // カテゴリーID配列
);

$post_id = wp_insert_post($post_data);
if (!$post_id) {
    // エラー処理
}

post_statusは以下から選択する。デフォルトはdraft。

  • publish:公開済
  • future:予約済
  • draft:下書き
  • pending:承認待ち
  • private:非公開 

カスタムフィールドを使っている場合

update_post_meta(投稿ID, 'カスタムフィールドのキー', 値);で保存できる。
投稿IDはwp_insert_post関数の戻り値。

update_post_meta($post_id, 'my_field', 100);

添付ファイル

media_handle_upload(name属性, 投稿ID, ['post_content' => 説明文]);
でPOST送信されたファイルをメディアライブラリに登録することができる。
投稿IDを0にすると、記事に紐づかない状態で登録される。

if (is_uploaded_file($_FILES["hoge"]["tmp_name"])) {
    $attachmentId = media_handle_upload('hoge', 0, ['post_content' => "添付されたファイルです。"]);
}

wp_get_attachment_link関数で、添付ファイルへのリンクHTML文字列を取得することができる。
画像の場合はimgタグも出力される。
wp_get_attachment_link(投稿ID, 画像の大きさ);
※投稿IDはmedia_handle_upload関数の戻り値

以下のようにwp_update_post関数を使うと、投稿の本文が添付画像になる。

wp_update_post(
    array(
        'ID' => $post_id,
        'post_content' =>  wp_get_attachment_link($attachmentId, 'full')
    )
);

画像の大きさは以下から選択する。デフォルトはthumbnail。

  • thumbnail
  • medium
  • large
  • full

【新しい記事】

【古い記事】

コメントを残す

メールアドレスが公開されることはありません。