wordpress:“;wp_insert_post()";-中断页面


wordpress: "wp_insert_post()" - break page

当我添加函数"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(。。。