Wordpress wp_insert_post导致无限循环

时间:2013-11-04 22:34:57

标签: php wordpress-plugin wordpress

我正在开发一个Wordpress插件,它采用PitchEngine JSON提要,并将每个'Pitch'添加为Wordpress Post。

我能够检索'Pitch'内容,但是将'Pitch'添加为帖子的波纹管功能会导致无限循环,这会增加无限数量的帖子。我已将其追溯到wp_insert_post函数。没有它,就没有无限循环,有了它,就有......

function pitchengine_create_post($jsonvals, $post_type = 'post') {

//Create Post



    $post = array(

          'comment_status' =>  'closed',
          'ping_status'    => 'closed', 
                      'post_content'   => $jsonvals->Text, 
          'post_date'      => $jsonvals->PublishDate, 
        'post_excerpt'   => $jsonvals->Summary, 
          'post_status'    =>  'publish',
          'post_title'     => $jsonvals->Headline, 
          'post_type'      => $post_type,           

          );  


    $post_id = wp_insert_post( $post, $wp_error );  

//Add Post Meta

        //pitchengine ID [DisplayUrl]
        add_post_meta($post_id, 'pitch_ID', $jsonvals->DisplayUrl);

        //pitchengine URL (brand Url base) + [DisplayUrl]
        add_post_meta($post_id, 'pitch_URL', $jsonvals->Meta->shorturl);

        //source name (pitchengine) 
        add_post_meta($post_id, 'pitch_name', 'Pitch Engine');




 //If error, return error

 //If success set return post ID
 $response = $post_id;

 return $response;

 }

我可能会出错的任何想法?

2 个答案:

答案 0 :(得分:1)

想出这个:

我正在测试此功能,方法是将其添加到save_post操作中,每次wp_insert_post()运行时都会调用此操作。这创造了我的无限循环。为了解决这个问题,我从save_post钩子中删除了该函数,并将该函数挂钩到与wp_insert_post函数无关的其他操作。

答案 1 :(得分:0)

save_post和publish_post操作在您发布或更新帖子的所有时间都有效。 因此,每次都可以调用函数。 要解决这个问题,您可以使用CURL函数。 当你获取feed时,在php页面上发布这些数据(使用Curl),你可以在其中编写插入帖子的代码。

我希望它能解决你的问题。