我想自动创建帖子标题。在数据库中创建帖子之前,帖子标题是根据类别和类别ID制作的,但不会获得类别和ID。
非常感谢任何帮助,谢谢。
function my_post_titles($data, $postarr){
$postid = $postarr['ID'];
$postcategory = $postarr['post_category'];
$data['post_title'] = $postcategory."-".$postid;
return $data;
}
add_filter('wp_insert_post_data', 'my_post_titles', '99', 2 );
答案 0 :(得分:1)
此处需要注意的事项:wp_insert_post_data
是wp_insert_post
允许更改其第一个参数的过滤器,因此为了了解您的问题,您应该检查wp_insert_post
的方式的工作原理。
https://developer.wordpress.org/reference/functions/wp_insert_post/
基本上,如果您要创建新帖子的帖子,那么它不应该有任何ID(因为它甚至没有创建并保存到数据库中)。要访问帖子ID
,建议您使用save_post
挂钩而不是wp_insert_post
。 save_post
是在创建或更新帖子后触发的操作。例如:
add_action('save_post', function($post_id) {
$title = get_the_title($post_id);
if ($title) {
return; // if the post has already has a title, then do nothing
}
// Otherwise, update the post title here
});
此外,$postarr['post_category']
是一个数组,而不是一个字符串,因此要获得正确的信息,必须先将其转换为字符串,然后再将其与post_id连接。