gpt4 book ai didi

php - Wordpress:使用 wp_insert_post() 填充自定义帖子类型字段

转载 作者:太空狗 更新时间:2023-10-29 14:45:48 27 4
gpt4 key购买 nike

我创建了一个自定义帖子类型 wreSTLing 并使用高级自定义字段创建了相应的自定义字段。现在,我希望用户在前端填写此自定义表单,以便在提交时,数据会在仪表板的自定义帖子类型中自动更新。为此,我创建了一个自定义页面并为其分配了一个包含所需表单的自定义模板。用户应该填写四个 HTML 表单字段,名为 namevenuemain_eventfee分别。

我使用高级自定义字段创建的自定义表单字段被命名为 promotion_namevenuemain_event_price分别。现在,为了将用户在前端输入的数据填充到仪表板的自定义帖子类型字段中,我尝试使用 wp_insert_post() 函数,如下所示:

$post_information = array(
'promotion_name' => $_POST['name'],
'venue' => $_POST['venue'],
'main_event_' => $_POST['main_event'],
'price' => $_POST['fee'],
'post_type' => 'wrestling',
);

wp_insert_post( $post_information );

但是,在用户提交表单后,新条目 (no_title) 确实出现在我的自定义帖子类型中,但自定义表单字段仍然是空的(见下图:)

enter image description here

enter image description here

我确定这是因为我没有正确使用 wp_insert_post() 来更新自定义帖子类型。我真的很感激这里的一些帮助。谢谢。

PS:这就是我在 functions.php 中定义自定义帖子类型的方式:

<?php 
function wrestling_show_type()
{
register_post_type('wrestling',
array('labels' => array('name' => 'Wrestling Shows', 'singular_name' => 'Wrestling Show'),
'public' => true,
'has_archive' => true,
'rewrite' => array('slug' => 'wrestling')));

flush_rewrite_rules();
}
add_action('init', 'wrestling_show_type');
?>

最佳答案

如果您使用过 ACF,则应该使用他们的 API 与字段进行交互。有一种方法叫做 update_field()这正是你正在寻找的。该方法有 3 个参数:

update_field($field_key, $value, $post_id)

$field_key 是 ACF 为您创建的每个字段提供的 ID。这张图片取自他们自己的文档,向您展示了如何获取它:

How to get the field key

编辑 $field_key 也将接受字段名称。

$value$post_id 非常简单,它们代表您要设置字段的值,以及您要更新的帖子。

在你的情况下,你应该做一些事情来检索这个 $post_id。幸运的是,这就是 wp_insert_post() 返回的内容。所以,你可以这样做:

$post_information = array(
//'promotion_name' => $_POST['name'],
'post_type' => 'wrestling'
);

$postID = wp_insert_post( $post_information ); //here's the catch

有了ID,那么事情就简单了,只需为每个要更新的字段调用update_field()即可。

update_field('whatever_field_key_for_venue_field', $_POST['venue'], $postID);
update_field('whatever_field_key_for_main_event_field', $_POST['main_event'], $postID);
update_field('whatever_field_key_for_fee_field', $_POST['fee'], $postID);

基本上您要做的是先创建帖子,然后用值更新它。

我已经在 functions.php 文件中完成了此类操作,并且运行良好。据我所见,我认为您是在某种模板文件中使用此例程。我认为它会正常工作,您只需确保 ACF 插件已激活。

编辑:

我忘记了 promotion_name 字段。我对 $post_information 中的行进行了注释,因为它不会起作用。您应该改用 update_field(),就像其他 3 个一样。

update_field('whatever_field_key_for_promotion_name_field', $_POST['name'], $postID);

关于php - Wordpress:使用 wp_insert_post() 填充自定义帖子类型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31960870/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com