web-dev-qa-db-ja.com

wp_insert_postユーザーがログインせずに投稿できるようにしました...壊れました

この質問は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が間違っていたかわからない..それは働いていません。何か案は?ありがとう

2
andrewk

メモリーが役立つ場合、wp_insert_post()はいくつかの時点で現在のユーザーを使用します。

そのため、wp_set_current_user()を使用して共有の作成者ユーザーに切り替え、それが終わったら元の値に戻します。

あるいは、ユーザーにログインを要求し、すべてのグループがドラフトを作成できるようにします。

2

あなたが抱えている一つの問題は

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に渡すことができないと思うけれども……しかし最初に簡単なテストを試みなさい。

0
chris