获取作者ID和附件ID

时间:2013-04-07 作者:Eckstein

我有一个页面,在循环之外,显示一个媒体附件,其中包含一些关于它的基本信息(标题、上载日期等)。我可以通过在页面加载之前提交的表单获得附件ID。

我需要做的是确保只有上载了该文件的用户才能访问包含该文件的页面,从而保护页面的安全。为了做到这一点,我假设最简单的方法是将当前登录用户的ID与创建附件的用户的ID进行比较。但我似乎找不到一种方法可以在循环之外仅使用附件ID获取帖子作者的ID。

我被难住了,我该怎么做?

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

回到那天,我写了一个函数来检查它(你可以把它放在functions.php 并从您的页面中调用):

public function check_if_user_is_author($user_id, $post_id) {
    global $wpdb;
    $res = $wpdb->get_results($wpdb->prepare("SELECT * FROM " . $wpdb->posts ." WHERE ID = %d AND post_author = %d LIMIT 1", $post_id, $user_id));
    if(isset($res) && count($res) > 0) {
        return $res[0];
    } else {
        return false;
    }
}
此外,理论上,您只需获取post对象,并将作者ID与当前登录的用户ID进行比较。免责声明:以下代码未经测试。

$current_user_id = get_current_user_id();
$post_data = get_post($your_att_id, ARRAY_A);
$author_id = $post_data[\'post_author\'];
if( $current_user_id == $author_id ) {
    // good, current logged-in user is author of attachment
}

结束

相关推荐

由于ID已更改,因此复制小部件设置

我想将客户博客更新为基于实际部署主题的更新版本的子主题。我的问题是,该主题的开发人员更改了侧栏的ID。在旧版本中register_sidebar() 调用时未提供ID,因此WP使用数字ID。现在开发人员将IDs命名为AlphaNumeric(home-1, home-2, 等等)。我无法找到如何将数据库中的小部件设置从一个侧栏复制到另一个侧栏。因此,我在旧主题中注册了新的侧栏ID,在新主题中注册了旧的侧栏ID。比我用的Duplicate Widget Plugin 复制新侧栏中的小部件。当我预览新主题时,