確かにwp_insert_postを使えばWordPressに投稿する事が出来ます。
ただ、PHPがある程度理解出来ないと、具体的にはwp_insert_postのcodexを読んで内容が理出来る程度でないとちょっと辛いと思います。
とは言え、色々と事情もあると思うので簡単なサンプルコードを紹介します。
テーマのテンプレートなどに組み込んで動作を確認して下さい。
WordPress外のPHPファイルに組み込む場合は /wordpress/wp-blog-header.php を読み込む必要があります。
<?php
$action = 'like_a_salt.'; //salt的なやつ
//クエリチェック
if(isset($_POST['_wpnonce']) &&
wp_verify_nonce($_POST['_wpnonce'], $action) &&
isset($_POST['title']) &&
isset($_POST['content'])
){
//投稿設定
$new_post = array(
'post_type' => 'post',
'post_status' => 'publish',
'post_author' => 1, //投稿者のユーザーID
'post_title' => $_POST['title'],
'post_content' => $_POST['content'],
'comment_status' => 'closed',
'ping_status' => 'closed'
);
//投稿処理
$post_id = wp_insert_post($new_post);
//結果
if($post_id){
$result = '投稿に成功しました!';
}else{
$result = 'エラー: なんか失敗しました!!!';
}
}
?>
<html>
<head></head>
<body>
<?php if(isset($result)) echo '<p>'.$result.'</p>'; ?>
<form method="post" action="<?php the_permalink(); ?>">
<p>
<label for="title">タイトル:</label><br />
<input name="title" type="text" value="" id="title">
</p>
<p>
<label for="content">本文:</label><br />
<textarea name="content" id="content"></textarea>
</p>
<?php wp_nonce_field($action); ?>
<input type="submit" value="送信">
</form>
</body>
</html>
上記のコードの「投稿処理」の部分がwp_insert_postの記述になります。
wp_insert_postに与える引数はcodexを参考に適時変更して下さい。
wp_insert_postは投稿に成功すると投稿IDを返します。失敗した場合はfalse。
また、wp_nonce_field()という関数はCSRF対策用のトークンを生成する関数で、標準では_wpnonceという名称のhiddenフィールドを生成します。
このhiddenフィールドに自動生成されたパラメータをformのpost先で受け取って、wp_verify_nonce()関数で送信されたパラメータの整合性を確認します。
各関数の詳細はCodexで確認してみて下さい。
・wp_insert_post
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_insert_post
・wp_nonce_field
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_nonce_field
・wp_verify_nonce
http://wpdocs.sourceforge.jp/%E9%96%A2%E6%95%B0%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9/wp_verify_nonce
詳しい説明だけでなく、サンプルコードまで書いて頂きありがとうございます。
Codexは確認したつもりだったのですが、きちんと理解できていなかったようです。(HTMLの書き方も学び直さないといけませんでした)
このたびは本当にありがとうございました。