publish_post和wp_insert_post的无限循环错误

时间:2016-11-24 10:24:24

标签: wordpress hook

我遇到了无限循环错误。我需要在为默认英语语言创建帖子时以德语插入帖子。 我使用publish_post动作钩子来捕捉英文帖子事件。但是在创建德语帖子时,也会通过wp_insert_post()函数执行publish_post挂钩。因此发生了infiniter错误。有人可以帮忙吗?谢谢。以下是我使用过的代码。

  add_action( 'publish_post', 'save_in_all_sites'  );

  function save_in_all_sites( $post_id ){

    global $sitepress;

         $my_post = array(
         'post_title'    => $post_title,
         'post_content'  => $post_content,
         'post_status'   => $post_status

         );

        $def_trid = $sitepress->get_element_trid($post_id);

        $ru_post_id1 = wp_insert_post( $my_post );
        // insert the post in German language 

          $sitepress->set_element_language_details($ru_post_id1, 'post_post', $def_trid, 'de');

   }

2 个答案:

答案 0 :(得分:1)

它应该在你wp_insert_post之前删除钩子,然后在之后立即添加它。

实施例

remove_action( 'publish_post', 'save_in_all_sites'  );
$ru_post_id1 = wp_insert_post( $my_post );
add_action( 'publish_post', 'save_in_all_sites'  );

答案 1 :(得分:0)

英语代码在哪里?是$def_trid吗?如果是,那么你将英语和德语都设置为element_language_details,所以当你得到它时,它会返回你用英语和德语的所有东西,尝试用数据库中的单独列分别设置它们。