使用相同的发布按钮插入多个帖子

时间:2020-02-27 作者:Shivanjali Chaurasia

我已经创建了一个自定义帖子,并使用Meta Box创建了字段。现在,我想实现的是:

假设一个用户输入了3个IMEI号码,但当用户点击发布按钮时,在后台应该有一个循环,将所有3个不同的IMEI号码作为3个不同的帖子输入,其中除了IMEI号码元键之外,所有其他元键都是相同的。

我只想知道在将元数据保存到数据库之前可以过滤元数据的钩子。

到目前为止,我已经试过了,wp_insert_post_datasave_post_{$post->post_type}, rwmb_before_save_postrwmb_after_save_post.

有没有办法实现这一目标?

1 个回复
最合适的回答,由SO网友:cjbj 整理而成

这应该是可能的,但需要一些工作。正如你所发现的,在wp_insert_post 功能,有一个挂钩save_post_{$post->post_type}, 创建具有特定自定义帖子类型的帖子时,可以对其他内容执行此操作。但是,如果使用此钩子创建其他帖子,将再次遇到该钩子,最终将进入无限循环。因此,您必须确保挂钩不会再次使用。它是这样的:

add_action (\'save_post_yourcustompostname\', \'wpse359582_make_three_posts\');
function wpse359582_make_three_posts ($post_ID, $post, $update) {
  // remove the hook so it won\'t be called with upcoming calls to wp_insert_post
  remove_action (\'save_post_yourcustompostname\', \'wpse359582_make_three_posts\');
  // make three copies
  $post1 = $post;
  $post2 = $post;
  $post3 = $post;
  // Now manipulate the three posts so each has a unique IMEI number
  ....
  // update the original post
  wp_update_post ($post1);
  // remove the id from the other two posts so WP will create new ones
  $post2[\'ID\'] = 0;
  $post3[\'ID\'] = 0;
  wp_insert_post ($post2);
  wp_insert_post ($post3);
  // put the hook back in place
  add_action (\'save_post_yourcustompostname\', \'wpse359582_make_three_posts\');
  }