如何知道哪个页面正在调用admin-ajax.php?

时间:2019-12-26 作者:Bojan

最初的目标是:
所有用户都可以在前端的页面上添加和删除图像,但他们只能看到自己的图像。

当在网站的管理部分时,管理员应该看到来自每个用户的所有图像。(只有管理员才能访问网站的管理部分)。

到目前为止,我有以下代码:

add_action( \'pre_get_posts\',\'users_own_attachments\' );
function users_own_attachments( $wp_query_obj ) {
    global $current_user, $pagenow;
    $is_attachment_request = ($wp_query_obj->get(\'post_type\')==\'attachment\');   
    if( !$is_attachment_request )
        return; 
    if( !is_a( $current_user, \'WP_User\') )
        return; 
    if( !in_array( $pagenow, array( \'upload.php\', \'admin-ajax.php\' ) ) )
        return;
    if(basename(get_page_template()) === \'upload.php\')
        return;
    if ( ! is_admin() && $query->is_main_query() ) 
        return;
    $wp_query_obj->set(\'author\', $current_user->ID );   
    return;
}
然而$pagenow 始终返回admin-ajax.php, 不管它在哪一页上,而且basename(get_page_template()) 始终仅返回主URL。$wp_query_obj 里面没有任何有用的信息。

如何检查用户是否正在上载。php,还是在网站的另一个页面上?

谢谢

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

我在网上搜索,发现了这个

strtolower( wp_get_referer() );
所以我能够放置简单的if语句并测试页面所称的管理ajax。

if (strpos($referrer, \'upload.php\') === false) { ... }

相关推荐

为什么我的AJAX GET请求给出了400个错误请求?

我是Wordpress的新手,我正在尝试在代码段插件的代码段中执行ajax请求。问题是我一直收到状态为400的错误请求。我发现很多人都有同样的问题,但没有人使用代码片段。所以我觉得这有点不同,所以我真的不知道该怎么办。这是我的密码。从“网络”选项卡中可以看到,请求似乎指向了正确的URL。sitename.com/wp-admin/admin-ajax.php?action=test 我试图记录错误,但它给我的只是一个对象。我用var\\u dump查看了对象,从中可以看出它有相同的错误,而且没有太多。f