この質問はstackoverflowで回答されています。ここにリンクがあります https://stackoverflow.com/questions/4321914/wp-insert-post-with-a-form/4321975#4321975
私はwp_insert_post()
関数を使って私のサイトにユーザーが投稿できるようにしています。
<?php $postTitle = $_POST['post_title'];
$post = $_POST['post'];
$submit = $_POST['submit'];
if(isset($submit)){
global $user_ID;
$new_post = array(
'post_title' => $postTitle,
'post_content' => $post,
'post_status' => 'publish',
'post_date' => date('Y-m-d H:i:s'),
'post_author' => $user_ID,
'post_type' => 'post',
'post_category' => array(7,100)
);
wp_insert_post($new_post);
}
?>
これをカテゴリページのフォームにフックしました
<form method="post" action="">
<input type="text" name="post_title" size="45" id="input-title"/>
<textarea rows="5" name="post" cols="66" id="text-desc"></textarea>
<input type="hidden" name="cat" value="7,100"/>
<input class="subput round" type="submit" name="submit" value="Post"/>
</form>
私はIDが間違っていたかわからない..それは働いていません。何か案は?ありがとう
メモリーが役立つ場合、wp_insert_post()はいくつかの時点で現在のユーザーを使用します。
そのため、wp_set_current_user()を使用して共有の作成者ユーザーに切り替え、それが終わったら元の値に戻します。
あるいは、ユーザーにログインを要求し、すべてのグループがドラフトを作成できるようにします。
あなたが抱えている一つの問題は
if(isset($submit)){
上の行で$ submitを宣言します
$submit = $_POST['submit'];
それが理由です
isset($submit)
常にTRUEを返してコードを実行します。
追加しますが
global $user_ID;
if ( $user_ID )
{
//insert your post
}
else
{
//give that person a message "Dude, you have to sign up or login to be able to submit content..."
}
それから、post_dateとpost_typeをあなたの値でスキップしてください。あなたがその関数に渡す量が少なければ少ないほど、あなたは間違ったことをすることができます。
私はあなたにこれを追加しようとします。 function.phpスクリプト
$new_post = array(
'post_title' => 'Test Post Title',
'post_content' => 'Test Post Content',
'post_status' => 'publish',
'post_author' => $user_ID,
);
wp_insert_post($new_post);
これはgioven値を含むニュース記事を挿入するはずです...これがうまくいくならあなたはあなたのフォームでエラーを探す必要があることを知っています。私はあなたがカテゴリをwp_insert_postに渡すことができないと思うけれども……しかし最初に簡単なテストを試みなさい。