是的,插件@Squideyes suggests you, 很好,应该可以做到。
然而,我不喜欢只指向插件答案的链接,所以这里是我的。
如果您将文件上载到WordPress uploads文件夹的子文件夹(默认情况下wp-content/uploads
, 但是可以很容易地更改)而不是通过代码将文件从那里转换为附件帖子非常容易,只需使用适当的参数调用即可:
代码可供复制(&U);粘贴在Codex中可用
here, 并复制如下:
<?php
// $filename should be the path to a file in the upload directory.
$filename = \'/path/to/uploads/2013/03/filname.jpg\';
// The ID of the post this attachment is for.
$parent_post_id = 37;
// Check the type of tile. We\'ll use this as the \'post_mime_type\'.
$filetype = wp_check_filetype( basename( $filename ), null );
// Get the path to the upload directory.
$wp_upload_dir = wp_upload_dir();
// Prepare an array of post data for the attachment.
$attachment = array(
\'guid\' => $wp_upload_dir[\'url\'] . \'/\' . basename( $filename ),
\'post_mime_type\' => $filetype[\'type\'],
\'post_title\' => preg_replace( \'/\\.[^.]+$/\', \'\', basename( $filename ) ),
\'post_content\' => \'\',
\'post_status\' => \'inherit\'
);
// Insert the attachment.
$attach_id = wp_insert_attachment( $attachment, $filename, $parent_post_id );
// Make sure that this file is included
require_once( ABSPATH . \'wp-admin/includes/image.php\' );
// Generate the metadata for the attachment, and update the database record.
$attach_data = wp_generate_attachment_metadata( $attach_id, $filename );
wp_update_attachment_metadata( $attach_id, $attach_data );
然而,这样的代码没有办法动态传递文件路径来加载,这是非常无用的,但是为作用域创建一个非常简单的UI是非常容易的。
工作流应为:
钩住某个地方以在其中输出表单upload.php
页使用\'admin_notices\'
表格将打印在页面顶部。表单将向同一页面发送请求\'load-upload.php\'
要检查POST请求,请执行一些检查(临时状态、用户能力、文件是否存在、检查文件是否已附加),最后使用Codex中的代码创建附件POST使用\'admin_notices\'
钩子为用户输出反馈,在这两种情况下都创建了附件或出现了问题此工作流中最困难的部分是创建附件,对于它,您已经有了代码,其他部分,可以使用我提供的链接,应该非常简单。
然而,我做了一个3文件的要点,有一个工作插件,完全按照上面工作流中所说的做,找到它here.
在那里,我添加了几行javascript以允许在内部显示/隐藏表单upload.php
.
下面您可以看到我的插件是如何工作的: