2013-06-27 3 views
1

UPDATE: ОК, теперь пользовательские сообщения с сообщениями должным образом .. добавил post_type => «отпуск», чтобы сделать эту работу ... но теперь я получаю ошибку 404 при отправке. Есть идеи?Wordpress Display Custom Post Type Form Form на лицевой стороне

Я пытаюсь добавить внешнюю форму на любую страницу/сообщение в Wordpress, но эта форма не запускает и не сохраняет какие-либо данные. Он не покажет сообщение благодарности после отправки (но форма отлично отображает с помощью короткого кода [отпуск]). Сообщение не добавляется в мою настраиваемую область типа «отпуск» в панели мониторинга (которая работает нормально). Есть ли способ, я должен сказать, что я как-то вставляю персонализированный тип сообщения «отпуск»? Чего я никого не прошу?

// Add shortcode to front end for vacation input 

add_shortcode('vacation', 'vacation_shortcode'); 

function vacation_shortcode() { 
if($_POST['vacation']=="submit" && !empty($_POST['action'])) { 
echo "Thanks for submitting your vacation request!"; 
} 
if (isset ($_POST['title'])) { 
$title = $_POST['title']; 
} else { 
echo 'Please add a description of your request!'; 
    } 
?><form method="post" name="vacation_form" action="" id="vacation_form" > 
<input type="text" name="title" value="Title of vacation request" /> 
<input type="text" name="_simple_vacation_type" value="Reason for absence" /> 
<input type="hidden" name="vacation" value="submit" /> 
<input type="hidden" name="action" value="new_vacation" /> 
<input type="submit" value="Submit"> 
<?php wp_nonce_field('new_vacation'); ?> 
</form> 
<?php 
} 
function simple_vacation_add_post(){ 

if($_POST['vacation']=="submit" && !empty($_POST['action'])) { 

$title  = $_POST['title']; 
$vacation_type = $_POST['_simple_vacation_type']; 

//the array of arguments to be inserted with wp_insert_post 

$new_post = array(
'post_title' => $title, 
'post_type'  =>'vacation', 
'post_status' => 'publish'   
); 

//insert the the post into database by passing $new_post to wp_insert_post 
$pid = wp_insert_post($new_post); 

//we now use $pid (post id) to help add our post meta data 
add_post_meta($pid, '_simple_vacation_type', $vacation_type, true); 
} 
} 

add_action('init','simple_vacation_add_post'); 

ответ

0

Вставка данных в пользовательских сообщение от Front End

if ('POST' == $_SERVER['REQUEST_METHOD'] && !empty($_POST['action']) && $_POST['action'] == "product") { 

    $title  = $_POST['title']; 
    $post_type = 'product'; 
    //the array of arguements to be inserted with wp_insert_post 
    $front_post = array(
    'post_title' => $title, 
    'post_status' => 'publish',   
    'post_type'  => $post_type 
    ); 

    //insert the the post into database by passing $new_post to wp_insert_post 
    //store our post ID in a variable $pid 
    $post_id = wp_insert_post($front_post); 
    //we now use $pid (post id) to help add out post meta data 
    update_post_meta($post_id, "short_description", @$_POST["short_description"]); 
    update_post_meta($post_id, "price", @$_POST["price"]); 
    update_post_meta($post_id, "length", @$_POST["length"]); 

HTML код Здесь

<form method="POST"> 
<label>Product Name</label> 
     <input type="text" value="" class="input-xlarge" name='title'> 
     <label>Product Description</label> 
     <textarea value="" rows="3" class="input-xlarge" name='short_description'> 
     </textarea> 
<label>Price</label> 
     <input type="text" value="" class="input-xlarge" name='price'> 
     <label>Dimensions (in):</label> 
     <input type="text" value="" class="input-xlarge" name='length' placeholder="Length"> 
    <div> 
      <button class="btn btn-primary">Add Product</button> 
     </div> 
     <input type="hidden" name="action" value="product" /> 
</from>