php 从联系人表单7提交创建WordPress帖子

zu0ti5jz  于 2022-11-21  发布在  PHP
关注(0)|答案(1)|浏览(140)

快速警告,我不擅长php编码,保持它尽可能简单:)。
我正在寻找一个解决方案,客人可以写在一个联系表7的形式,当他们提交它,一个WordPress的职位是自动创建的基础上,他们输入的信息。
我创建了这段代码,但我无法找出问题所在,因为没有创建任何帖子。

function save_cf7_data_to_cpt($contact_form)
{

    if ($contact_form->id(11247) !== $my_form_id) return;
    $submission = WPCF7_Submission::get_instance();
    if ($submission)
    {
        $posted_data = $submission->get_posted_data();
    }
    $args = array(
        'post_type' => 'post',
        'post_status' => 'draft',
        'post_category' => array(91),
        'post_title' => $posted_data['text-410'],
        'post_content' => $posted_data['textarea-420'],
        'post_date' => $posted_data['date'],

    );
    $post_id = wp_insert_post($args);
}

add_filter('wpcf7_before_send_mail', 'save_cf7_data_to_cpt');

当我提交我的信息,我得到了通常的确认消息,从联系表格7,但没有张贴。

jjhzyzn0

jjhzyzn01#

$my_form_id在您的函数中未定义,您可以使用wpcf7_mail_sent挂钩获取发布的数据,并将该数据添加到您的帖子中。
请尝试以下代码。

add_action( 'wpcf7_mail_sent',
  function( $contact_form) {
      
     $my_form_id = 711; //form id for post data

    if ($contact_form->id() != $my_form_id) return;

      $submission = WPCF7_Submission::get_instance();  
      if ( $submission ) {
          $posted_data = $submission->get_posted_data();
      }   
      
      $args = array(
        'post_type' => 'post',
        'post_status' => 'draft',
        'post_category' => array(91),
        'post_title' => $posted_data['text-410'],
        'post_content' => $posted_data['textarea-420'],
        'post_date' => $posted_data['date'],
    );
    $post_id = wp_insert_post($args);
 
    // Do some productive things here
  },
  10
);

相关问题