GET_DELETE_POST_LINK()仅适用于管理员,即使其他用户具有完全相同的权限也是如此

时间:2017-04-20 作者:dtx

我建立了一个市场类型的网站,用户可以通过get_delete_post_link().

对于这些列表,我已经设置了自定义帖子类型。

问题是只有管理员才能删除帖子。链接显示正确,但单击后,用户会返回到站点主页或当前页面,但帖子不会发生任何变化。

我真的很困惑,花了几个小时在谷歌上搜索并尝试各种解决方案,但都没有奏效。

我尝试过的事情包括:

设置map_meta_cap 正确和错误,并设置自定义capability_type 或者把它留在post.capability_type 权限安装Members插件并将所有可用的181个权限分配给订阅服务器角色,而不产生任何影响(即var_dump() 功能它看起来与管理员完全一样,但行为不同)注销各种检查(is_user_logged_in(), current_user_can(), $post->post_author == $current_user->ID, 等)将各种参数组合传递给get_delete_post_link()

如果您能给我提供“删除”我的帖子的其他方法的建议,我也将不胜感激。我也想过要编写一个自定义AJAX函数,但担心它会因为同样奇怪的权限问题(如果是权限问题)而失败。

谢谢你的帮助!

2 个回复
SO网友:Mnstd

我已经解决了同样的问题。如果不是你,也许这会帮助别人。

您是否阻止了非管理员用户访问/wp admin仪表板?get\\u delete\\u post\\u link()提供的链接使用wp admin,因此如果您阻止了对非管理员的访问,他们将无法执行删除。

SO网友:gsantapau

如果有人面临上述问题Mnstd 这个小补丁应该允许用户使用get_delete_post_link() 同时让他们远离/wp-admin/

function block_users_backend() {
    $current_url = $_SERVER[\'REQUEST_URI\'];
    if ( is_admin() && ! current_user_can( \'administrator\' ) && ! wp_doing_ajax() && !strpos($current_url,\'action=trash\')) {
        wp_redirect( home_url() );
        exit;
    }
}
add_action( \'init\', \'block_users_backend\' );

相关推荐

Recommended File Permissions

嘿,伙计们,我花了很长时间试图解决这个问题。我想知道WordPress中的文件权限应该是什么样子in order to use the autoupdate feature. 到目前为止,我的wordpress安装程序一直在询问我的FTP信息,我不想使用那种升级/安装方法,我想使用纯/直接PHP。某些上下文:Web服务器和php fcgi守护程序运行为www-data:www-data</wordpress安装位于/home/blaenk/sites/domain.tld/</首先,我read