在我的模板中,我使用acf_form从前端创建帖子。创建的帖子是票证系统的一部分,因此它们需要自动生成的包含票证号的post_title。票证编号应等于帖子ID。
要自动生成帖子标题,请使用“ wp_insert_post_data”。这几乎完美。当我在后端创建帖子时,一切都很好,但是当我从前端创建帖子时,票证获得了错误的ID。表单位于页面ID为38的页面上。现在,当我从前端创建帖子时,帖子标题始终为“ ticket-38”,而不是所创建帖子本身的ID。
add_filter( 'wp_insert_post_data' , 'modify_post_title' , '99', 1 );
function modify_post_title( $data )
{
if($data['post_type'] == 'tickets') {
$id = get_post_field ('ID', $data->ID);
$title = 'tickets-'.$id;
$data['post_title'] = $title ; //Updates the post title to new title.
}
return $data; // Returns the modified data.
}
我在做什么错了?
答案 0 :(得分:-1)
在插入帖子之前触发了过滤器'wp_insert_post_data'
,因此仍然没有ID,
您可以使用'save_post'
动作挂钩(在插入函数之后触发),然后使用wp_update_post()更新标题
add_action( 'save_post' , 'modify_post_title' , '99', 3 );
function modify_post_title( $post_id, $post, $update )
{
if($post->post_type == 'tickets' && ! $update ) {
wp_update_post( array(
'ID' => $post_id,
'post_title' => 'tickets-' . $post_id;
};
}