当我添加函数"wp_insert_post(("时-分页。在数据库"$pages"数组中插入多次相同的数据。。。仅在分页时停止。为什么?
谢谢;]
add_action('save_post', 'save_data_all');
function save_data_all($post_id)
{
$pages = array(
'post_title' => 'title',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_type' => 'page'
);
wp_insert_post($pages);
if(get_post_meta($post_id, 'l_news', true))
update_post_meta($post_id, 'l_news', $ser);
else
add_post_meta($post_id, 'l_news', $ser, false);
}
如果使用PHP应用程序得到一个空白页面,则意味着很可能发生了致命的错误。有时也会在抛出不在try {} catch () {}
-块中的异常时发生。
在您的案例中,您需要弄清楚PHP error_log
的位置。最简单的方法是使用以下代码创建一个.php
页面:<?php phpinfo();
。
如果指令为空,请设置它。这是您在php.ini
中执行的操作。有时网络主机也会为您提供一个界面来进行这些设置。但你没有分享那么多信息。
因此,无论如何,找到error_log
设置,然后打开日志文件并调查发生的错误。它应该在文件的末尾或接近末尾。
如果您需要更多调试错误的帮助,请分享错误消息并留下评论。
update_post_meta直到保存帖子之后才知道$post_id。在条件中,它将始终返回false。
在插入帖子时,您需要定义新的$post_id。试试这个:
add_action('save_post', 'save_data_all');
function save_data_all()
{
$pages = array(
'post_title' => 'title',
'post_content' => 'This is my post.',
'post_status' => 'publish',
'post_type' => 'page'
);
$post_id =wp_insert_post($pages);
if(get_post_meta($post_id, 'l_news', true))
update_post_meta($post_id, 'l_news', $ser);
else
add_post_meta($post_id, 'l_news', $ser, false);
}
"$pages"数组多次插入相同的数据…只有在分页时才会停止。为什么?">
这导致了递归,因为在wp_insert_post((函数中触发了"save_post"钩子。。所以,是的,它会一次又一次地发生!
也在wp_update_post中被调用(wp_update_post实际上在内部使用wp_insert_post(。。。