这是因为你第一次绕圈子$post
是当前帖子。但是,第二次循环时,$post没有改变。同样的事情发生在第三、第四、第五等
因为$post变量是该页面的当前帖子,而不是您刚刚保存/插入的帖子,所以if语句的循环总是true,并且需要无限循环。而不是检查$post
变量,则应检查正在保存的帖子的ID。如果我们查看执行操作的调用save_post
:
do_action(\'save_post\', $post_ID, $post);
我们现在看到save\\u post有参数!!因此,如果我们在添加时指示函数接受1个参数:
add_action(\'save_post\', \'createGallery\',1,1);
然后添加post ID参数并使用该参数:
function createGallery ($post_ID) {
if ( get_post_type($post_ID) == \'activity\' ) {
$gallerypost = array(
\'post_content\' => \'the text of the post\',
\'post_status\' => \'publish\',
\'post_title\' => \'Photo album\',
\'post_type\' => \'post\',
\'post_author\' => 1);
wp_insert_post( $gallerypost );
}
}
那么你的无限循环应该消失了!如果不是这样的话,那么您已经朝着使代码更准确的方向迈出了相当大的一步,因为您现在正在处理正确的数据。
我要警告你\'post_type\' => \'post\',
到\'post_type\' => \'activity\',
将重新引入无限循环。