我正试图用dropzonejs uploader编写一个在前端上传和删除图像的函数,到目前为止,我设法使一切正常。
但问题是,我需要确保正在删除的图像实际上是由正在删除图像的用户上载的。
在媒体库的wordpress管理区域中,当我单击图像时,在附件详细信息中有一个Uploaded by
使用上载特定图像的用户名。
但在网上和wordpress codex上搜索时,我没有找到如何检索上传图像的用户id的任何信息。
所以id我有图像id并尝试用删除wp_delete_attachment
是否有办法检查谁是该图像的上载者,并将登录的用户id与图像上载者id进行比较,如果两者匹配,则删除该图像。
SO网友:knif3r
我在我的网站上使用了类似的东西,只显示其他用户上传的媒体附件,如果这是你的一个选项,你可以使用代码,也可以编辑它以满足你的需要,但事实是,它获取用户ID的方式与从带有post_author
下面是您可以测试的代码,看看这是否对您有好处。
//Hide Media Library images Start
function hide_posts_media_by_other($query) {
global $pagenow;
if (( \'edit.php\' != $pagenow && \'upload.php\' != $pagenow ) || !$query->is_admin) {
return $query;
}
if (!current_user_can(\'manage_options\')) {
global $user_ID;
$query->set(\'author\', $user_ID);
}
return $query;
}
add_filter(\'pre_get_posts\', \'hide_posts_media_by_other\');
add_filter(\'posts_where\', \'hide_attachments_wpquery_where\');
function hide_attachments_wpquery_where($where) {
global $current_user;
if (!current_user_can(\'manage_options\')) {
if (is_user_logged_in()) {
if (isset($_POST[\'action\'])) {
if ($_POST[\'action\'] == \'query-attachments\') {
$where .= \' AND post_author=\' . $current_user->data->ID;
}
}
}
}
return $where;
}
//Hide Media Library images END
SO网友:lonerunner
解决方案实际上非常简单,只需一行代码,因为我意识到附件id实际上与任何其他帖子id相同,我可以根据帖子字段检索用户id。
$post_author_id = get_post_field( \'post_author\', $post_id );
这将获取上载图像的用户的用户id
$post_id
是图像附件id
所以进一步检查
if( $post_author_id == $current_user->ID )
检查图像的上载者和当前登录的用户是否相同,并允许或取消删除图像。