我遇到了无限循环错误。我需要在为默认英语语言创建帖子时以德语插入帖子。 我使用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');
}
答案 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
,所以当你得到它时,它会返回你用英语和德语的所有东西,尝试用数据库中的单独列分别设置它们。