问题:创建一个cron作业将帖子导出到服务器上的WordPress XML文件

时间:2011-02-28 作者:Chris_O

我需要一种方法来自动导出特定日期的所有WordPress帖子,并将其输出到服务器上,每天都可以下载该文件。

之所以需要XML格式,是因为该网站是大型博客网络的一部分,而父网站不使用WordPress,而是在其搜索结果中为内容编制索引。母公司使用的XML解析器不能处理增量。它需要一次发布所有帖子的全部内容。

我的方法是使用wp_schedule_event 那火export_wp 并将缓冲区输出到文件中。问题是创建的文件是空的。

我当前的代码是:

register_activation_hook(__FILE__, \'c3m_my_activation\');
add_action(\'c3m_export_daily\', \'c3m_export_xml\');

function c3m_my_activation() {
    wp_schedule_event(time(), \'daily\', \'c3m_export_daily\');
}

function c3m_export_xml() {
    $ob_file = fopen(\'server_path_to_my_file.xml\',\'w\');

    $args=array(
        \'content\' => \'posts\',
        \'start_date\' => \'october 2008\',
        \'status\' => \'published\');

        function ob_file_callback($buffer)
        {
          global $ob_file;
          fwrite($ob_file,$buffer);
        }

    ob_start(\'ob_file_callback\');
    export_wp($args);

    ob_end_flush();
}
我也尝试过,没有添加任何$args来导出\\u wp,但文件仍然是空的。我希望这可以通过export\\u wp完成,这样整个过程就不必从头开始编写。

1 个回复
最合适的回答,由SO网友:wyrfel 整理而成

你的问题是ob_file 不是全球性的。您仅在中定义它c3m_export_xml(). 背景global $ob_file 在里面ob_file_callback() 为您提供一个空文件句柄。请尝试以下操作:

function c3m_export_xml() {     
    $args=array(
        \'content\' => \'posts\',
        \'start_date\' => \'october 2008\',
        \'status\' => \'published\');

    ob_start();
    export_wp($args);
    $xml = ob_get_clean();

    file_put_contents(\'server_path_to_my_file.xml\', $xml);
}

结束

相关推荐