您好,我正在使用最新的WP版本,与WooCommerce一起使用。
我有一个插件,允许用户从产品页面上传图像。图像作为存档zip文件上载。
我需要用户可以选择使用插件对媒体库中的图像进行特效,例如:
InstaFX
问题是,使用该插件上载的所有图像
zipped, 因此,它们不在数据库中。所以wordpress不知道这些图片是否在服务器上,也不知道是谁上传的。
因此,我编写了一个小PHP脚本,将所有文件提取到媒体文件夹。
现在的问题是,所有用户都可以看到该文件夹中的媒体。
是否有办法编写一个使用用户名的小插件,并告诉WP该用户的媒体文件夹与用户名位于同一文件夹中。示例:
username: testusrand何时testusr 转到媒体库wordpress,告知该用户的文件夹位于“uploads/testusr“”
因此,用户只能看到自己的图像。
我知道我可以改变wp-config.php
但这是一个全局设置,我正在寻找每个用户的设置。
最合适的回答,由SO网友:M.mik 整理而成
最简单的方法是:
// $filename should be the path to a file in the upload directory.
$filename = \'2016/09/1.jpg\';
// The ID of the post this attachment is for.
$parent_post_id = 32;
// Check the type of file. 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, as wp_generate_attachment_metadata() depends on it.
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 );
set_post_thumbnail( $parent_post_id, $attach_id );
使用这个工作很好唯一的问题是没有缩略图,除了工作很好