当我添加函数“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);
}
答案 0 :(得分:0)
如果您获得带有PHP应用程序的空白页面,则表示最有可能发生致命错误。有时它也会抛出一个不在try {} catch () {}
- 块中的异常。
在您的情况下,您需要弄清楚PHP error_log
的位置。最简单的方法是使用以下代码创建.php
页面:<?php phpinfo();
。
如果指令为空,请进行设置。这是你在php.ini
中所做的事情。有时,webhosters还为您提供了执行这些设置的界面。但你没有分享那么多信息。
所以无论如何,找到error_log
设置,然后打开日志文件并调查发生的错误。它应该在文件的末尾或附近。
如果您需要更多帮助来调试错误,请分享错误消息并发表评论。
答案 1 :(得分:0)
在保存帖子之后,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);
}
答案 2 :(得分:0)
“”$ pages“数组插入多次相同的数据...仅在中断页面时停止。为什么?”
这导致了递归,因为在wp_insert_post()函数中触发了'save_post'钩子。所以它会一遍又一遍地发生!
也会在wp_update_post中调用(wp_update_post实际上在内部使用wp_insert_post)...