所以我有不同用户的自定义帖子。
每个帖子都有以下元键:
post_width
,post_height
以及title
,description
等常用数据,如下所示:
$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:
发布#2:
等
现在,每个帖子都有contact button
,当点击按钮并显示联系表单时,我想自动填写这些post meta
(当然从视图中隐藏)。因此,当提交表单时,它将具有发布信息并能够告知观众与哪个帖子联系。
我希望我有意义。
所以,这是我的问题。
我如何call
或save
根据每个帖子的post_id
发布元(例如标题,说明,自定义元数据等)? (因为每个按钮都有唯一的post_id
,这将是call
其余数据的良好起点
非常感谢任何帮助。
谢谢!
更新1:
所以,我在contact.php
中有联系表格,通过ajax调用。
我使用ajax调用联系表单的原因是为了节省带宽。这是一个场景。假设一页上有50个帖子。然后,如果为所有帖子生成contact form
,则会严重增加总页面大小。
为了避免这种情况,我正在实施ajax,只有在点击按钮时才能调用联系表单。
所以,这是一个问题。
如何将post_id
“传递”到另一个php文件? (contact_form.php)以便联系表单是唯一的?
谢谢!
答案 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
然后,您可以使用该数据向表单添加隐藏字段。