2017-02-06 47 views
2

我想将联系人表单从联系人表单7处理为自定义帖子类型。联系表单7至自定义帖子类型

目前,这是我有:

<?php 

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

//store our post vars into variables for later use 
//now would be a good time to run some basic error checking/validation 
//to ensure that data for these values have been set 
$title  = $_POST['title']; 
$content = $_POST['content']; 
$Interest = $_POST['Interest']; 
$post_type = 'purchase'; 


//the array of arguements to be inserted with wp_insert_post 
$new_post = array(
'post_title' => $title, 
'post_content' => $content, 
'tags_input' => $tags, 
'posted_data' => $Interest, 
'post_status' => 'publish', 
'post_category' => array('0',$_POST['cat']),   
'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 
//we now use $pid (post id) to help add out post meta data 
$pid=wp_insert_post($new_post); 

//we now use $pid (post id) to help add out post meta data 
add_post_meta($pid, 'cust_key', $custom_field); 


} 
?> 

下面是实际的形式链接:http://stage.icardpromotions.com/create-purchase-order/

我需要能够在所有信息中拉形成这种形式进入自定义后键入“购买”

正如你所看到的,我目前拉在POST_CONTENT,POST_TITLE等

我也试图拉从内容形式的内容通过输入名称“兴趣”,但它不起作用。

有没有人有线索如何做到这一点?

回答

0

有一个插件可以做到这一点,Post My CF7 Form

+0

感谢您的回复@Aurovrata,我试过发布我的CF7表单,但有一些限制,我也想将表单连接到插件路线图中的现有自定义发布类型 –

+0

,最终它将允许您张贴到现有的帖子类型。 – Aurovrata

+0

@KylePoyser上周发布的插件v2.0现在包含了将表单映射到现有帖子类型的能力 – Aurovrata

1

这里是一个快速舌尖到如何去使用自己的代码实现上述,第一register your custom post

add_action('init', 'my_custom_post'); 
    function(){ 
     $args = array(
     /*post type registration parameters*/ 
    ); 
     register_post_type('my_custom_post', $args); 
    } 

下一个,你想捕捉发布的数据和create a new post

add_filter('wpcf7_posted_data', 'save_posted_data'); 
    function save_posted_data($posted_data) { 
     $args = array(
     'post_type' => 'my_custom_post', 
     /*other default parameters you want to set*/ 
    ); 
     $post_id = wp_insert_post($args); 
     if(!is_wp_error($post_id)){ 
     if(isset($posted_data['form-field-name'])){ 
      update_post_meta($post_id, 'form-field-name', $posted_data['form-field-name']); 
     } 
     //and so on ... 
     return $posted_data; 
    } 
1
function save_posted_data($posted_data) { 


     $args = array(
     'post_type' => 'post', 
     'post_status'=>'draft', 
     'post_title'=>$posted_data['your-name'], 
      'post_content'=>$posted_data['your-message'], 
     ); 
     $post_id = wp_insert_post($args); 

     if(!is_wp_error($post_id)){ 
     if(isset($posted_data['your-name'])){ 
      update_post_meta($post_id, 'your-name', $posted_data['your-name']); 
     } 
     // if(isset($posted_data['your-email'])){ 
     // update_post_meta($post_id, 'your-email', $posted_data['your-email']); 
     // } 
     // if(isset($posted_data['your-subject'])){ 
     // update_post_meta($post_id, 'your-subject', $posted_data['your-subject']); 
     // } 
     if(isset($posted_data['your-message'])){ 
      update_post_meta($post_id, 'your-message', $posted_data['your-message']); 
     } 
     //and so on ... 
     return $posted_data; 
    } 
} 

add_filter('wpcf7_posted_data', 'save_posted_data'); 

--------------------解释它-------------------------

首先要功能,并添加一个钩wpcf7_posted_data它

---第一步---

function save_posted_data($posted_data) { 

} 
add_filter('wpcf7_posted_data', 'save_posted_data'); 

---第二步---

现在u需要添加一些参数到需要使用wp_insert_post();

$args = array(
     'post_type' => 'post', 
     'post_status'=>'draft', 
     'post_title'=>$posted_data['your-name'], 
      'post_content'=>$posted_data['your-message'], 
     ); 
$post_id = wp_insert_post($args); 

---第三步进行填充后---

检查如果填充项是错误或不

if(!is_wp_error($post_id)){ //do ur stuffs } 

---第四步---

现在检查isset领域与否和更新METAS 如后

if(isset($posted_data['your-name'])){ 
    update_post_meta($post_id, 'your-name', $posted_data['your-name']); 
} 

并且在最后的返回值

return $posted_data; 

Full代码在上面。

+0

您应该解释您的答案! – Mazz

相关问题