问题是,如果创建的帖子不是manually-published
, 但新职位是automatically-published
, 这些不匹配。您的条件不够明确,因此在插入插入的帖子以防止无限循环时,需要跳过该场景
而不是:
function create_auto_post($post_ID) {
if (get_post_type($post_ID) != \'manually-published\') return;
考虑:
function create_auto_post( $post_ID, $post ) {
if ( in_array( $post->post_type, [ \'manually-published\', \'automatically-published\' ] ) {
return;
}
进一步说明:
这不是一个过滤器,实际上是一个动作,使用add_action
相反save_post
操作将post对象作为第二个参数传递,最好使用该参数。您需要指出此函数使用2个而不是1个参数才能工作。您的原始代码假定所有post都是2种post类型,但您忘记了图像/附件也是post类型,就像nav菜单中的菜单项以及其他插件添加的许多其他内容一样。现在它将创造automatically-published
张贴所有菜单项和附件,以及其他您可能没有考虑到的内容