无法使用wp_insert_post_data获取帖子ID和类别

时间:2018-04-20 00:10:15

标签: wordpress function

我想自动创建帖子标题。在数据库中创建帖子之前,帖子标题是根据类别和类别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 );

1 个答案:

答案 0 :(得分:1)

此处需要注意的事项:wp_insert_post_datawp_insert_post允许更改其第一个参数的过滤器,因此为了了解您的问题,您应该检查wp_insert_post的方式的工作原理。

https://developer.wordpress.org/reference/functions/wp_insert_post/

基本上,如果您要创建新帖子的帖子,那么它不应该有任何ID(因为它甚至没有创建并保存到数据库中)。要访问帖子ID,建议您使用save_post挂钩而不是wp_insert_postsave_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连接。