来自“post_id”

时间:2015-09-14 02:55:13

标签: php jquery wordpress

所以我有不同用户的自定义帖子。

每个帖子都有以下元键:

post_widthpost_height以及titledescription等常用数据,如下所示:

$tags = $_POST['post_tags'];
$custom_field_1 = $_POST['custom_1'];
$custom_field_2 = $_POST['custom_2']; 

$post = array(
    'post_title'    => $title,
    'post_content'  => $description,
    'post_category' => $_POST['cat'], 
    'tags_input'    => $tags,                                   
    'post_status'   => 'publish',           
    'post_type' => $_POST['post_type']  
    );                              
$pid = wp_insert_post($post);
add_post_meta($pid, 'post_width', $custom_field_1, true);
add_post_meta($pid, 'post_height', $custom_field_2, true);  

现在,当这些帖子在循环中显示时,每个帖子都会post_id

获得$id = get_the_ID();

现在有趣的部分

现在,假设显示了5个帖子,每个帖子都有唯一的post_id,如下面的data-post_id按钮中所示。

 <?php echo '<button type="button" class="contact_button" data-post_id="' .$id. '">' ;?>
    Open the contact form
 <?php echo '</button>';?>

单击该按钮时,将显示以下联系表单:

 <form action="<?php the_permalink(); ?>" method="post">
      <p><label for="name">Name: <span>*</span> <br><input type="text" name="message_name" value="<?php echo esc_attr($_POST['message_name']); ?>"></label></p>
      <p><label for="message_email">Email: <span>*</span> <br><input type="text" name="message_email" value="<?php echo esc_attr($_POST['message_email']); ?>"></label></p>
      <p><label for="message_text">Message: <span>*</span> <br><textarea type="text" name="message_text"><?php echo esc_textarea($_POST['message_text']); ?></textarea></label></p>
      <p><label for="message_human">Human Verification: <span>*</span> <br><input type="text" style="width: 60px;" name="message_human"> + 3 = 5</label></p>
      <input type="hidden" name="submitted" value="1">
         <p><input type="submit"></p>
  </form>

如您所见,联系表格并不合适。

以下是我想要实现的目标

由于有5个帖子,我想在发送联系表单时对每个帖子做出特定的说明。

这就是我的意思。

假设有5个帖子如下所示:

发布#1:

  • 标题:多么美好的一天
  • 帖子作者: Mike
  • 发表作者的电子邮件: mike@example.com
  • 帖子描述:这是一个阳光灿烂的日子
  • 宽度: 14px
  • 高度: 15px
  • 联系按钮

发布#2:

  • 标题:这是第2篇
  • 帖子作者:史蒂夫
  • 发表作者的电子邮件: steve@example.com
  • 帖子描述:是星期日
  • 宽度: 1222px
  • 身高: 1233px
  • 联系按钮

现在,每个帖子都有contact button,当点击按钮并显示联系表单时,我想自动填写这些post meta(当然从视图中隐藏)。因此,当提交表单时,它将具有发布信息并能够告知观众与哪个帖子联系。

我希望我有意义。

所以,这是我的问题。

我如何callsave根据每个帖子的post_id发布元(例如标题,说明,自定义元数据等)? (因为每个按钮都有唯一的post_id,这将是call其余数据的良好起点

非常感谢任何帮助。

谢谢!

更新1:

所以,我在contact.php中有联系表格,通过ajax调用。

我使用ajax调用联系表单的原因是为了节省带宽。这是一个场景。假设一页上有50个帖子。然后,如果为所有帖子生成contact form,则会严重增加总页面大小。

为了避免这种情况,我正在实施ajax,只有在点击按钮时才能调用联系表单。

所以,这是一个问题。

如何将post_id“传递”到另一个php文件? (contact_form.php)以便联系表单是唯一的?

谢谢!

1 个答案:

答案 0 :(得分:3)

您是否尝试过使用

 get_post_meta()

类似的东西:

 $custom-meta = get_post_meta($post_id, 'custom-meta', true)

您可以在此处找到更多信息。 https://developer.wordpress.org/reference/functions/get_post_meta/

至于标题,你可以这样做

 $post_title = get_the_title( $post_id );
 echo $post_title

https://codex.wordpress.org/Function_Reference/get_the_title

然后,您可以使用该数据向表单添加隐藏字段。