这里真正的问题是下载服务。让我们先将这两项任务分开,以便更好地了解这一点。
上载1…通过Word Direct,Word可以根据直接与WordPress通信xmlrpc.php
. 打开新文件时,选择Blog post 作为模板,然后输入一次用户凭据。Word将记住这些。使用一个单独的帐户可能会很有用,以防MS也给家里打电话。
现在,您可以将Word文本直接发布到WordPress。您还可以稍后编辑它们,甚至可以导入现有的博客帖子进行进一步编辑。请记住,Word会将自己的样式直接嵌入HTML代码中。这太难看了。
有一个post on WPMU Dev about the details.
2…作为PDF,有许多Windows驱动程序允许您以PDF格式打印文档。要么找到一个具有开发人员API和事件处理的脚本,以便将上载处理程序附加到打印操作,要么编写一个自定义shell脚本,监视硬盘上的一个目录,并在文件发生更改或替换时上载该文件。
这里棘手的部分是,您不能将PDF发布为博客文章,您必须将该文件添加到媒体库中。后者也可以通过XML RPC完成。
下载
如果文本存储为HTML,如第一个选项中所示,则必须再次将HTML转换回Word。这方面有很多工具。你可以试试
PHPWord.
实际的WordPress处理程序可以侦听中的操作wp-admin/admin-post.php
如导出数据中所述CSV in back end with proper HTTP headers:
if ( is_admin() )
{
$action = \'print_doc\';
add_action( "admin_post_nopriv_{$action}", \'print_word\' );
add_action( "admin_post_{$action}", \'print_word\' );
}
function print_word()
{
$post_id = filter_input( INPUT_GET, \'id\', FILTER_VALIDATE_INT );
if ( ! $post_id )
return;
$post = get_post( $post_id );
status_header( 200 );
header(\'Content-Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document\');
header(\'Content-Disposition: attachment; filename=\' . $post->post_name . \'.docx\');
header(\'Pragma: no-cache\');
// Convert $post->post_content to Word
// Output the Word document
exit;
}
要在前端创建链接,可以过滤
the_content
:
if ( ! is_admin() )
{
add_filter( \'the_content\', function( $content ) {
if ( ! is_singular() )
return $content;
$post_id = get_the_ID();
$url = admin_url( \'admin-post.php\' );
$link = sprintf(
\'<p class="download-link"><a href="%s">Download</a></p>\',
admin_url( \'admin-post.php\' ) . \'?action=print_doc&id=\' . $post_id
);
return $content . $link;
});
}
如果已将文件上载为PDF,请使用
get_attached_media()
这里,过滤PDF的返回值。并以与上面相同的方式创建链接。