wordpress:“wp_insert_post()” - 中断页面

时间:2011-04-28 17:38:52

标签: php wordpress

当我添加函数“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); 

}

3 个答案:

答案 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)...