当サイト、Codex 日本語版は今後積極的な更新は行わない予定です。後継となる新ユーザーマニュアルは、https://ja.wordpress.org/support/ にあります。
万が一、当サイトで重大な問題を発見した際などは、フォーラムWordSlack #docs チャンネルでお知らせください。</p>

「関数リファレンス/wp insert post」の版間の差分

提供: WordPress Codex 日本語版
移動先: 案内検索
(en:Function Reference/wp insert post 08:50, 27 April 2010 Solenoid)
 
(sanitize_post () と wp_strip_all_tags() にリンクを張った)
 
(3人の利用者による、間の3版が非表示)
1行目: 1行目:
==Description==
+
== 説明<span id="Description"></span> ==
This function inserts posts (and pages) in the database. It sanitizes variables, does some checks, fills in missing variables like date/time, etc. It takes an object as its argument and returns the post ID of the created post (or <tt>0</tt> if there is an error).
+
  
==Usage==
+
データベースへ投稿(および固定ページ)を追加します。無害化や値のチェック、デフォルト値の設定なども行います。投稿オブジェクト(配列)を引数に取り、作成された投稿の ID(失敗時は <tt>0</tt>)を返します。
%%% <?php wp_insert_post( $post ); ?> %%%
+
  
==Example==
+
== 使い方<span id="Usage"></span> ==
Before calling wp_insert_post() it is necessary to create an object (typically an array) to pass the necessary elements that make up a post. The wp_insert_post() will fill out a default list of these but the user is required to provide the title and content otherwise the database write will fail.
+
 
 +
<?php wp_insert_post( $post, $wp_error ); ?>
 +
 
 +
== パラメータ<span id="Parameters"></span> ==
 +
 
 +
{{Parameter|$post|配列&#124;オブジェクト|投稿の要素を表す配列またはオブジェクト。キーの名前は <tt>[[Database_Description#Table:_wp_posts|wp_posts]]</tt> テーブルの各フィールド名に一致させます。}}
 +
 
 +
<div style="border:1px solid blue; width:90%; padding:10px">
 +
'''重要''':<code>$post['ID']</code> に値を入れても、その ID の投稿は作成されません。値を入れると、その ID を持つ投稿を、<code>$post</code> で与えられた残りの値を使って更新します。つまり、新規投稿を作成するには <code>$post['ID']</code> を空文字列にするか、値を何も入れないでおく必要があります。
 +
</div>
 +
 
 +
<code>$post</code> 配列の内容は、あなたがデフォルト値をどれだけ利用するかに応じて指定すればよいでしょう。下記は、一つの投稿に対してセットできるすべてのキーと短い説明のリストです:
  
The user can provide more elements than are listed here by simply defining new keys in the database. The keys should match the names of the columns in the wp_posts table in the database.
 
 
<pre>
 
<pre>
// Create post object
+
$post = array(
   $my_post = array();
+
  'ID'            => [ <投稿 ID> ] // 既存の投稿を更新する場合に指定。
   $my_post['post_title'] = 'My post';
+
   'post_content'  => [ <文字列> ] // 投稿の全文。
   $my_post['post_content'] = 'This is my post.';
+
   'post_name'      => [ <文字列> ] // 投稿のスラッグ。
   $my_post['post_status'] = 'publish';
+
  'post_title'     => [ <文字列> ] // 投稿のタイトル。
   $my_post['post_author'] = 1;
+
  'post_status'    => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | 登録済みカスタムステータス ] // 公開ステータス。デフォルトは 'draft'。
   $my_post['post_category'] = array(8,39);
+
   'post_type'      => [ 'post' | 'page' | 'link' | 'nav_menu_item' | カスタム投稿タイプ ] // 投稿タイプ。デフォルトは 'post'
 +
   'post_author'    => [ <ユーザー ID> ] // 作成者のユーザー ID。デフォルトはログイン中のユーザーの ID。
 +
  'ping_status'    => [ 'closed' | 'open' ] // 'open' ならピンバック・トラックバックを許可。デフォルトはオプション 'default_ping_status' の値。
 +
  'post_parent'    => [ <投稿 ID> ] // 親投稿の ID。デフォルトは 0。
 +
  'menu_order'     => [ <順序値> ] // 固定ページを追加する場合、メニュー内の並び順を指定。デフォルトは 0。
 +
   'to_ping'        => // スペースまたは改行で区切った、ピンを打つ予定の URL のリスト。デフォルトは空文字列。
 +
  'pinged'        => // スペースまたは改行で区切った、ピンを打った URL のリスト。デフォルトは空文字列。
 +
  'post_password'  => [ <文字列> ] // 投稿パスワード。デフォルトは空文字列。
 +
  'guid'           => // 普通はこれを指定せず WordPress に任せてください。
 +
  'post_content_filtered' => // 普通はこれを指定せず WordPress に任せてください。
 +
  'post_excerpt'  => [ <文字列> ] // 投稿の抜粋。
 +
  'post_date'      => [ Y-m-d H:i:s ] // 投稿の作成日時。
 +
   'post_date_gmt'  => [ Y-m-d H:i:s ] // 投稿の作成日時(GMT)。
 +
  'comment_status' => [ 'closed' | 'open' ] // 'open' ならコメントを許可。デフォルトはオプション 'default_comment_status' の値、または 'closed'。
 +
  'post_category' => [ array(<カテゴリー ID>, ...) ] // 投稿カテゴリー。デフォルトは空(カテゴリーなし)。
 +
  'tags_input'    => [ '<tag>, <tag>, ...' | array ] // 投稿タグ。デフォルトは空(タグなし)。
 +
  'tax_input'      => [ array( <タクソノミー> => <array | string>, ...) ] // カスタムタクソノミーとターム。デフォルトは空。
 +
  'page_template'  => [ <文字列> ] // テンプレートファイルの名前、例えば template.php 等。デフォルトは空。
 +
);
 +
</pre>
  
// Insert the post into the database
+
'''注意事項'''
   wp_insert_post( $my_post );
+
* post_title と post_content が必要です。
 +
* 'post_status': 投稿ステータスに 'future' を設定するときは、WordPress が投稿をいつ公開すればよいか判るよう、未来の日付を post_date に設定してください。[[Post Status Transitions]] も見てください。
 +
* 'post_category': <code>[[関数リファレンス/wp_set_post_categories|wp_set_post_categories()]]</code> を呼び出すのと同じです。
 +
* 'tags_input': <code>[[関数リファレンス/wp_set_post_tags|wp_set_post_tags()]]</code> を呼び出すのと同じです。
 +
* 'tax_input': 配列の各要素(カスタムタクソノミーとターム)について <code>[[関数リファレンス/wp_set_post_terms|wp_set_post_terms()]]</code> を呼び出すのと同じです。ログイン中のユーザーがタクソノミーを扱う権限を持たない場合は代わりに <code>wp_set_object_terms()</code> を使う必要があります。
 +
* 'page_template': 投稿タイプが <code>'page'</code> なら、[[Page_Templates|ページテンプレート]]を設定します。失敗すると <code>WP_Error</code> または <code>0</code> を返し、この関数は最後のアクションを呼び出す前に終了します。投稿タイプが <code>'page'</code> でなければ、このパラメータは無視されます。固定ページではないものにページテンプレートを設定するには、キー <code>'_wp_page_template'</code> を指定して <code>[[関数リファレンス/update_post_meta|update_post_meta()]]</code> を呼び出します。
 +
 
 +
{{Parameter|$wp_error|真偽値|<tt>true</tt> にすると、失敗したときに <tt>[[クラスリファレンス/WP Error|WP_Error]]</tt> オブジェクトを返します。|オプション|<tt>false</tt>}}
 +
 
 +
== 戻り値<span id="Return Values"></span> ==
 +
 
 +
投稿をデータベースに追加できた場合、投稿 ID を返します。失敗すると、$wp_error が false なら <tt>0</tt> を、true なら <tt>[[クラスリファレンス/WP Error|WP_Error]]</tt> オブジェクトを返します。
 +
 
 +
== 用例<span id="Examples"></span> ==
 +
 
 +
<tt>wp_insert_post()</tt> を実行する前に、必要な投稿の要素を渡すための配列を作成する必要があります。<tt>wp_insert_post()</tt> は未指定の値にデフォルト値を設定しますが、タイトル・本文・抜粋の何れかを必ず指定してください。どれも未指定の場合は、追加に失敗します。
 +
 
 +
次の例は投稿のタイトル、本文、ステータス、作成者、カテゴリーを設定します。データベースの <tt>wp_posts</tt> テーブルにあるフィールドを配列のキーにして値を追加できます。
 +
<pre>
 +
// 投稿オブジェクトを作成
 +
$my_post = array(
 +
  'post_title'    => 'My post',
 +
   'post_content'  => 'This is my post.',
 +
  'post_status'  => 'publish',
 +
  'post_author'  => 1,
 +
  'post_category' => array(8,39)
 +
);
 +
 
 +
// 投稿をデータベースへ追加
 +
wp_insert_post( $my_post );
 
</pre>
 
</pre>
  
The default list referred to above is defined in the function body. It is as follows:
+
新規投稿を追加して、その ID を返します。
 +
<pre>
 +
$post_id = wp_insert_post( $post, $wp_error );
 +
// $post_id を add_post_meta や update_post_meta に渡して利用できます
 +
</pre>
 +
 
 +
デフォルト値のリストは関数の本体で定義されていますが、次のようになっています:
 
<pre>
 
<pre>
 
$defaults = array(
 
$defaults = array(
'post_status' => 'draft',  
+
  'post_status'           => 'draft',
'post_type' => 'post',
+
  'post_type'             => 'post',
'post_author' => $user_ID,
+
  'post_author'           => $user_id,
'ping_status' => get_option('default_ping_status'),  
+
  'ping_status'           => get_option( 'default_ping_status' ),
'post_parent' => 0,
+
  'post_parent'           => 0,
'menu_order' => 0,
+
  'menu_order'           => 0,
'to_ping' => '',
+
  'to_ping'               => '',
'pinged' => '',
+
  'pinged'               => '',
'post_password' => '',
+
  'post_password'         => '',
'guid' => '',
+
  'guid'                 => '',
'post_content_filtered' => '',
+
  'post_content_filtered' => '',
'post_excerpt' => '',
+
  'post_excerpt'         => '',
'import_id' => 0);
+
  'post_content'         => '',
 +
  'post_title'            => ''
 +
);
 
</pre>
 
</pre>
  
===Categories===
+
== カテゴリー<span id="Categories"></span> ==
Categories need to be passed as an array of integers that match the category IDs in the database. This is the case even where only one category is assigned to the post.
+
  
==Parameters==
+
カテゴリーはデータベースに登録済みのカテゴリー ID の配列で指定します。カテゴリーがひとつの場合でも配列にします。
{{Parameter|$post|object|An object representing the elements that make up a post. There is a one-to-one relationship between these elements and the names of columns in the wp_posts table in the database.}}
+
  
'''IMPORTANT''': Setting a value for $post['ID'] WILL NOT create a post with that ID number. Setting this value will cause the function to update the post with that ID number with the other values specified in $post. In short, to insert a new post, $post['ID'] must be blank or not set at all.
+
<code>[[関数リファレンス/wp_set_post_terms|wp_set_post_terms()]]</code> も見てください。
 +
 
 +
== セキュリティ<span id="Security"></span> ==
 +
 
 +
<tt>wp_insert_post()</tt> はデータを [[関数リファレンス/sanitize_post|<tt>sanitize_post()</tt>]] に通します。これにより、必要な無害化と検証(KSES 等)を実行します。
 +
 
 +
従って、心配する必要はありません。
 +
 
 +
しかし、投稿タイトルや他のフィールドから、HTML や JavaScript や PHP タグを除去したいと思うかもしれません。驚くべきことに、WordPress はこれを自動的には行いませんが、[[関数リファレンス/wp_strip_all_tags|<tt>wp_strip_all_tags()</tt>]] 関数を使えば簡単に実行できます。またフロントエンドに投稿入力フォームを作るときにとても役立ちます。
  
The contents of the post array can depend on how much (or little) you want to trust the defaults. Here is a list with a short description of all the keys you can set for a post:
 
 
<pre>
 
<pre>
$post = array(
+
// 投稿オブジェクトを作成
   'ID' => [ <post id> ] //Are you updating an existing post?
+
$my_post = array(
  'menu_order' => [ <order> ] //If new post is a page, sets the order should it appear in the tabs.
+
   'post_title'   => wp_strip_all_tags( $_POST['post_title'] ),
   'comment_status' => [ 'closed' | 'open' ] // 'closed' means no comments.
+
   'post_content' => $_POST['post_content'],
   'ping_status' => [ 'closed' | 'open' ] // 'closed' means pingbacks or trackbacks turned off
+
   'post_status'   => 'publish',
   'pinged' => [ ? ] //?
+
   'post_author'  => 1,
   'post_author' => [ <user ID> ] //The user ID number of the author.
+
   'post_category' => array( 8,39 )
   'post_category' => [ array(<category id>, <...>) ] //Add some categories.
+
);
  'post_content' => [ <the text of the post> ] //The full text of the post.
+
 
  'post_date' => [ Y-m-d H:i:s ] //The time post was made.
+
// 投稿をデータベースへ追加
  'post_date_gmt' => [ Y-m-d H:i:s ] //The time post was made, in GMT.
+
wp_insert_post( $my_post );
  'post_excerpt' => [ <an excerpt> ] //For all your post excerpt needs.
+
  'post_name' => [ <the name> ] // The name (slug) for your post
+
  'post_parent' => [ <post ID> ] //Sets the parent of the new post.
+
  'post_password' => [ ? ] //password for post?
+
  'post_status' => [ 'draft' | 'publish' | 'pending'| 'future' ] //Set the status of the new post.
+
  'post_title' => [ <the title> ] //The title of your post.
+
  'post_type' => [ 'post' | 'page' ] //Sometimes you want to post a page.
+
  'tags_input' => [ '<tag>, <tag>, <...>' ] //For tags.
+
  'to_ping' => [ ? ] //?
+
);
+
 
</pre>
 
</pre>
  
'''NOTE''' (added 10/1/2009): The '''page_template''' key was removed from the $post table and is now located in the wp_postmeta table. To set the page template of a page, use [[Function Reference/update_post_meta|update_post_meta]] instead.
+
<div id="Change_Log">
 +
== 変更履歴 ==
 +
</div>
 +
 
 +
* 1.0 : 新規導入
 +
 
 +
== 変更履歴<span id="Change_Log"></span> ==
 +
 
 +
<tt>wp_insert_post()</tt> は {{Trac|wp-includes/post.php}} にあります。
 +
 
 +
== 関連項目<span id="Related"></span> ==
 +
 
 +
[[関数リファレンス/wp update post|wp_update_post()]],  
 +
[[関数リファレンス/wp delete post|wp_delete_post()]],
 +
[[関数リファレンス/wp publish post|wp_publish_post()]],
 +
[[関数リファレンス/wp delete attachment|wp_delete_attachment()]]/[[:en:Function Reference/wp delete attachment|en]],
 +
[[関数リファレンス/wp get attachment url|wp_get_attachment_url()]],
 +
[[関数リファレンス/wp insert attachment|wp_insert_attachment()]]/[[:en:Function Reference/wp insert attachment|en]]
 +
 
 +
フィルター: [[プラグイン API/フィルターフック一覧/wp insert post data|wp_insert_post_data()]]/[[:en:Plugin API/Filter Reference/wp insert post data|en]]
  
'''NOTE 2''': The '''post_status''' is documented at [[Post Status Transitions]].
+
{{Tag Footer}}
  
'''NOTE 3''': If providing a post_status of 'future' you must specify the post_date in order for WordPress to know when to publish your post.
+
{{原文|Function Reference/wp insert post|153323}} <!--12:30, 11 August 2015‎ Stevendaily  版 -->
  
==Return==
+
{{DEFAULTSORT:Wp_insert_post}}
The ID of the post if the post is successfully added to the database. Otherwise returns <tt>0</tt>.
+
[[Category:関数]]
  
==Related==
+
[[en:Function_Reference/wp_insert_post]]
[[Function Reference/wp update post|wp_update_post()]], [[Function Reference/wp delete post|wp_delete_post()]], [[Function Reference/wp publish post|wp_publish_post()]], [[Function Reference/wp delete attachment|wp_delete_attachment()]],
+
[[ru:Справочник по функциям/wp insert post]]
[[Function Reference/wp get attachment url|wp_get_attachment_url()]],
+
[[Function Reference/wp insert attachment|wp_insert_attachment()]]
+
{{Copyedit}}
+
{{原文|Function Reference/wp insert post|86485}}<!-- 08:50, 27 April 2010 Solenoid -->
+
[[Category:Functions]]
+
[[Category:New page created]]
+
[[en:Function Reference/wp insert post]]
+
 
[[tr:Fonksiyon Listesi/wp insert post]]
 
[[tr:Fonksiyon Listesi/wp insert post]]
 +
[[zh-hans:函数参考/wp_insert_post]]

2018年5月2日 (水) 20:48時点における最新版

説明

データベースへ投稿(および固定ページ)を追加します。無害化や値のチェック、デフォルト値の設定なども行います。投稿オブジェクト(配列)を引数に取り、作成された投稿の ID(失敗時は 0)を返します。

使い方

<?php wp_insert_post( $post, $wp_error ); ?>

パラメータ

$post
配列|オブジェクト) (必須) 投稿の要素を表す配列またはオブジェクト。キーの名前は wp_posts テーブルの各フィールド名に一致させます。
初期値: なし

重要$post['ID'] に値を入れても、その ID の投稿は作成されません。値を入れると、その ID を持つ投稿を、$post で与えられた残りの値を使って更新します。つまり、新規投稿を作成するには $post['ID'] を空文字列にするか、値を何も入れないでおく必要があります。

$post 配列の内容は、あなたがデフォルト値をどれだけ利用するかに応じて指定すればよいでしょう。下記は、一つの投稿に対してセットできるすべてのキーと短い説明のリストです:

$post = array(
  'ID'             => [ <投稿 ID> ] // 既存の投稿を更新する場合に指定。
  'post_content'   => [ <文字列> ] // 投稿の全文。
  'post_name'      => [ <文字列> ] // 投稿のスラッグ。
  'post_title'     => [ <文字列> ] // 投稿のタイトル。
  'post_status'    => [ 'draft' | 'publish' | 'pending'| 'future' | 'private' | 登録済みカスタムステータス ] // 公開ステータス。デフォルトは 'draft'。
  'post_type'      => [ 'post' | 'page' | 'link' | 'nav_menu_item' | カスタム投稿タイプ ] // 投稿タイプ。デフォルトは 'post'。
  'post_author'    => [ <ユーザー ID> ] // 作成者のユーザー ID。デフォルトはログイン中のユーザーの ID。
  'ping_status'    => [ 'closed' | 'open' ] // 'open' ならピンバック・トラックバックを許可。デフォルトはオプション 'default_ping_status' の値。
  'post_parent'    => [ <投稿 ID> ] // 親投稿の ID。デフォルトは 0。
  'menu_order'     => [ <順序値> ] // 固定ページを追加する場合、メニュー内の並び順を指定。デフォルトは 0。
  'to_ping'        => // スペースまたは改行で区切った、ピンを打つ予定の URL のリスト。デフォルトは空文字列。
  'pinged'         => // スペースまたは改行で区切った、ピンを打った URL のリスト。デフォルトは空文字列。
  'post_password'  => [ <文字列> ] // 投稿パスワード。デフォルトは空文字列。
  'guid'           => // 普通はこれを指定せず WordPress に任せてください。
  'post_content_filtered' => // 普通はこれを指定せず WordPress に任せてください。
  'post_excerpt'   => [ <文字列> ] // 投稿の抜粋。
  'post_date'      => [ Y-m-d H:i:s ] // 投稿の作成日時。
  'post_date_gmt'  => [ Y-m-d H:i:s ] // 投稿の作成日時(GMT)。
  'comment_status' => [ 'closed' | 'open' ] // 'open' ならコメントを許可。デフォルトはオプション 'default_comment_status' の値、または 'closed'。
  'post_category'  => [ array(<カテゴリー ID>, ...) ] // 投稿カテゴリー。デフォルトは空(カテゴリーなし)。
  'tags_input'     => [ '<tag>, <tag>, ...' | array ] // 投稿タグ。デフォルトは空(タグなし)。
  'tax_input'      => [ array( <タクソノミー> => <array | string>, ...) ] // カスタムタクソノミーとターム。デフォルトは空。
  'page_template'  => [ <文字列> ] // テンプレートファイルの名前、例えば template.php 等。デフォルトは空。
);  

注意事項

  • post_title と post_content が必要です。
  • 'post_status': 投稿ステータスに 'future' を設定するときは、WordPress が投稿をいつ公開すればよいか判るよう、未来の日付を post_date に設定してください。Post Status Transitions も見てください。
  • 'post_category': wp_set_post_categories() を呼び出すのと同じです。
  • 'tags_input': wp_set_post_tags() を呼び出すのと同じです。
  • 'tax_input': 配列の各要素(カスタムタクソノミーとターム)について wp_set_post_terms() を呼び出すのと同じです。ログイン中のユーザーがタクソノミーを扱う権限を持たない場合は代わりに wp_set_object_terms() を使う必要があります。
  • 'page_template': 投稿タイプが 'page' なら、ページテンプレートを設定します。失敗すると WP_Error または 0 を返し、この関数は最後のアクションを呼び出す前に終了します。投稿タイプが 'page' でなければ、このパラメータは無視されます。固定ページではないものにページテンプレートを設定するには、キー '_wp_page_template' を指定して update_post_meta() を呼び出します。
$wp_error
真偽値) (オプションtrue にすると、失敗したときに WP_Error オブジェクトを返します。
初期値: false

戻り値

投稿をデータベースに追加できた場合、投稿 ID を返します。失敗すると、$wp_error が false なら 0 を、true なら WP_Error オブジェクトを返します。

用例

wp_insert_post() を実行する前に、必要な投稿の要素を渡すための配列を作成する必要があります。wp_insert_post() は未指定の値にデフォルト値を設定しますが、タイトル・本文・抜粋の何れかを必ず指定してください。どれも未指定の場合は、追加に失敗します。

次の例は投稿のタイトル、本文、ステータス、作成者、カテゴリーを設定します。データベースの wp_posts テーブルにあるフィールドを配列のキーにして値を追加できます。

// 投稿オブジェクトを作成
$my_post = array(
  'post_title'    => 'My post',
  'post_content'  => 'This is my post.',
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_category' => array(8,39)
);

// 投稿をデータベースへ追加
wp_insert_post( $my_post );

新規投稿を追加して、その ID を返します。

$post_id = wp_insert_post( $post, $wp_error );
// $post_id を add_post_meta や update_post_meta に渡して利用できます

デフォルト値のリストは関数の本体で定義されていますが、次のようになっています:

$defaults = array(
  'post_status'           => 'draft',
  'post_type'             => 'post',
  'post_author'           => $user_id,
  'ping_status'           => get_option( 'default_ping_status' ),
  'post_parent'           => 0,
  'menu_order'            => 0,
  'to_ping'               => '',
  'pinged'                => '',
  'post_password'         => '',
  'guid'                  => '',
  'post_content_filtered' => '',
  'post_excerpt'          => '',
  'post_content'          => '',
  'post_title'            => ''
);

カテゴリー

カテゴリーはデータベースに登録済みのカテゴリー ID の配列で指定します。カテゴリーがひとつの場合でも配列にします。

wp_set_post_terms() も見てください。

セキュリティ

wp_insert_post() はデータを sanitize_post() に通します。これにより、必要な無害化と検証(KSES 等)を実行します。

従って、心配する必要はありません。

しかし、投稿タイトルや他のフィールドから、HTML や JavaScript や PHP タグを除去したいと思うかもしれません。驚くべきことに、WordPress はこれを自動的には行いませんが、wp_strip_all_tags() 関数を使えば簡単に実行できます。またフロントエンドに投稿入力フォームを作るときにとても役立ちます。

// 投稿オブジェクトを作成
$my_post = array(
  'post_title'    => wp_strip_all_tags( $_POST['post_title'] ),
  'post_content'  => $_POST['post_content'],
  'post_status'   => 'publish',
  'post_author'   => 1,
  'post_category' => array( 8,39 )
);

// 投稿をデータベースへ追加
wp_insert_post( $my_post );

変更履歴

  • 1.0 : 新規導入

変更履歴

wp_insert_post()wp-includes/post.php にあります。

関連項目

wp_update_post(), wp_delete_post(), wp_publish_post(), wp_delete_attachment()/en, wp_get_attachment_url(), wp_insert_attachment()/en

フィルター: wp_insert_post_data()/en


関数リファレンステンプレートタグ目次もご覧ください。


最新英語版: WordPress Codex » Function Reference/wp insert post最新版との差分