更新:好的,现在自定义帖子数据发布正确..添加了post_type =>'度假'使这项工作...但现在我提交时出现404错误。有什么想法吗?
我正在尝试向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 :(得分:0)
从前端自定义帖子中插入数据
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 Code Here
<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>