Опубликовать пользовательский тип сообщения с фронта - PullRequest
0 голосов
/ 14 декабря 2011

Я хочу опубликовать пользовательский тип сообщения "вопрос" из внешнего интерфейса, но когда я отправляю форму, я получаю сообщение об ошибке 404. Сильфон это форма и обработка формы. Что я делаю не так?

<?
/**
 * Questions processing
 */
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] )) {

    // Do some minor form validation to make sure there is content
    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Please add a question';
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    } else {
        echo 'Please add a description';
    }

    // Add the content of the form to $post as an array
    $post = array(
        'post_title'    => $title,
        'post_content'  => $description,
        'post_status'   => 'publish',           
        'post_type' => 'question'                 
    );
    wp_insert_post($post);  // Pass  the value of $post to WordPress the insert function


} // end IF

// Do the wp_insert_post action to insert it
do_action('wp_insert_post', 'wp_insert_post'); 

?>




<h1>Add a question:</h1>

<!-- New Question Form -->

<div>

<form name="new_post" method="post" action="">

<p><label for="title">Question:</label><br />

<input type="text" value="" name="title" />

</p>

<p><label for="description">Details</label><br />

<textarea name="description" cols="50" rows="6"></textarea>

</p>

<p><input type="submit" value="Ask!" name="submit" /></p>

<input type="hidden" name="post_type" value="question" />

<input type="hidden" name="action" value="new_post" />

<?php wp_nonce_field( 'new-post' ); ?>

</form>

</div>

<!--// New Question Form -->

Ответы [ 2 ]

0 голосов
/ 14 декабря 2011

Я разобрался:

Я удалил строку:

<input type="hidden" name="post_type" value="question" />

Я думаю, что Wordpress как-то использует переменную post с этим именем, и я получаю ошибку, если использую ее самостоятельно.

0 голосов
/ 14 декабря 2011

На самом деле вам не нужен бит add_action, и я чувствую, что сама переменная $ post вызывает проблемы.

/**
 * Questions processing
 */
if( 'POST' == $_SERVER['REQUEST_METHOD'] && !empty( $_POST['action'] )) {

    // Do some minor form validation to make sure there is content
    if (isset ($_POST['title'])) {
        $title =  $_POST['title'];
    } else {
        echo 'Please add a question';
    }
    if (isset ($_POST['description'])) {
        $description = $_POST['description'];
    } else {
        echo 'Please add a description';
    }

    // Add the content of the form to $post as an array
    $new_post = array(
        'post_title'    => $title,
        'post_content'  => $description,
        'post_status'   => 'publish',           
        'post_type' => 'question'                 
    );
    $id = wp_insert_post($new_post);  // Pass  the value of $post to WordPress the insert function
    //Returns ID of the new post you just created

И на всякий случай также добавьте URL-адрес в тег формы:

<form name="new_post" method="post" action="<?php the_permalink(); ?>">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...