andrewk
  • 0
Новичок

wp_insert_post разрешить пользователям отправлять сообщения без входа в систему… сломался

  • 0

на этот вопрос был дан ответ в stackoverflow. вот ссылка

я пытаюсь позволить пользователям публиковать сообщения на моем сайте с помощью 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 сделал не так.. это не работает. есть идеи? Спасибо

Share
  1. на самом деле это я здесь, это правильно в фактическом файле

    • 0
  2. wp_insert_post() использует текущего пользователя в нескольких точках, если не изменяет память.

    Итак, вы хотели бы использовать wp_set_current_user(), чтобы переключить это на какого-то общего пользователя-автора, а затем вернуть его к исходному значению, когда вы закончите.

    В качестве альтернативы потребуйте, чтобы пользователи вошли в систему, и разрешите всем группам создавать черновики.

    • 0
  3. Одна проблема у вас есть

    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);
    

    Это должно вставить сообщение новостей с заданными значениями… Если это сработает, вы знаете, что вам нужно искать ошибку в своей форме. Хотя я думаю, что вы не можете передавать категории в wp_insert_post…. Но сначала попробуйте простой тест.

    • 0

Оставить ответ

You must login to add an answer.