- 2008-02-10 (日)
- IT
モバイルからの投稿を最終目標に色々調べていますが、WP投稿用のAPIがあるので楽ですね。
難点はAPIに関するドキュメントが少ない‥‥というか現行バージョンのタグ周りに関しては皆無に近いので、コードを読んで使い方を調べないと‥‥ってくらいですが、PHPのコードを読む勉強になるので良しとしましょう。
んで、とりあえず投稿だけするスクリプトをテストで作りました。
ユーザー認証もサニタイズも文字コード変換もしてないですが、テストなのでその辺はご愛敬。
WPへの投稿は基本的に配列に色々つっこんで、wp_insert_post()の呼び出しでOK。
成功すればポストID(管理ページで見られる各記事の番号)が帰ってきて、失敗したら0。
iG:Syntax Hiliterのテストをかねてソースを貼ってみる。
PHP:
- <?php
- // これをするだけでWordPressのAPIが呼び出し放題!
- require_once '../../wp-config.php';
- ?>
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
- </head>
- <body>
- <h1 id="toc-wp">WP投稿テスト</h1>
- <form method="post" action="index.php">
- <table border="0">
- <tr>
- <td>タイトル</td>
- <td><input type="text" name="title" value="" /></td>
- </tr>
- <tr>
- <td>内容</td>
- <td><textarea name="content"></textarea></td>
- </tr>
- <tr>
- <td>投稿者名</td>
- <td><input type="text" name="author" value="" /></td>
- </tr>
- <tr>
- <td>タイプ</td>
- <td><input type="text" name="type" value="post" /></td>
- </tr>
- <tr>
- <td>ステータス</td>
- <td><input type="text" name="status" value="publish" /></td>
- </tr>
- <tr>
- <td>閲覧パスワード</td>
- <td><input type="text" name="password" value="" /></td>
- </tr>
- <tr>
- <td>カテゴリ</td>
- <td>
- <?php
- $categories = get_categories();
- foreach( $categories as $category )
- echo '<input type="checkbox" name="categories[]" value="'.$category->cat_ID.'" />'.$category->cat_name . '<br />' . "\n";
- ?>
- </td>
- </tr>
- <tr>
- <td>日付</td>
- <td><input type="text" name="date" value="" /></td>
- </tr>
- <tr>
- <td>タグ</td>
- <td><input type="text" name="tags" value="test,foo" /></td>
- </tr>
- </table>
- <input type="submit" value="送信">
- </form>
- <?php
- // とりあえずタイトルと本文は必須ってことにしとく
- if( $_POST['title'] == '' || $_POST['content'] == '' )
- exit;
- $postarr['post_status'] = $_POST['status']; // publish, draft, private, inherit, future
- $postarr['post_type'] = $_POST['type']; // post, page, attachment
- $postarr['post_author'] = get_profile('ID', $_POST['author']);
- $postarr['post_password'] = $_POST['password'];
- $postarr['post_category'] = $_POST['categories'];
- $postarr['post_content'] = $_POST['content'];
- $postarr['post_title'] = $_POST['title'];
- $postarr['post_date'] = $_POST['date'];
- $postarr['tags_input'] = split(',', $_POST['tags'] );
- $postarr['post_excerpt'] = ' '; // とりあえず空っぽにしとく
- if( wp_insert_post($postarr) == 0 )
- echo '<div style="color:#ff0000">投稿失敗!!</div>';
- else
- echo '<div style="color:#ff0000">投稿成功しました</div>';
- ?>
- </body>
- </html>
関連記事
- Newer: lzhは過去のもの。これからはzipで。
- Older: 雑誌『Newton』の良い使い方
Comments:0
Trackbacks:0
- Trackback URL for this entry
- http://fifnel.com/2008/02/10/1109/trackback/
- Listed below are links to weblogs that reference
- 81行から成るWordPressの自作投稿フォーム from ふぃふmemo






