2017-08-24 97 views
1

我的一個客戶正在使用Woocommerce運行wordpress網站。最近我被要求以其用戶之一的身份登錄,以便複製問題。WordPress的:爲什麼訂戶可以看到管理面板?

我發現的是,我可以鍵入/ wp-admin,它只是把我帶到完整的管理面板,我擁有與管理員相同的菜單項。這顯然是非常嚴重的,因爲如果任何用戶知道這一點,他們可以把網站放下,如果他們想要的話。

在試圖阻止他們,我把下面的腳本在functions.php文件:

// Redirect non-admins away from wp-admin 
add_action('init', 'blockusers_init'); 

function blockusers_init() { 
    $current_user = wp_get_current_user(); 

    if (is_admin() && ! current_user_can('administrator') && ! (defined('DOING_AJAX') && DOING_AJAX)) { 
     wp_redirect(home_url()); 
     exit; 
    } 
} 

爲具有「用戶」的角色,current_user_can(「管理員」用戶登錄後)返回false如果我在網站的前端,並且返回如果我轉到/ wp-admin,則返回true

由於當前用戶只是一個訂閱者,我認爲它應該在任何地方都返回false。

我有點卡住了......我不知道接下來應該看什麼。 (我嘗試了像禁用所有插件一樣的東西,但問題仍然存在)。你們有什麼想法我應該接下來嘗試嗎?

+0

您是否點擊了管理面板並確認它實際上是管理面板而不是個人用戶設置管理面板? –

+0

您是否在常規設置中選中了「新用戶默認角色」選項? – JazZ

回答

0

上述問題的原因是網站中的黑客入侵。我在根文件夾中發現了一些不應該在那裏的文件。臨時修復是刪除wp-admin和wp-includes,並從新安裝中複製文件夾。現在用戶不能再查看管理面板,並且它會像它應該重定向到前端。現在我必須掃描插件文件夾,看看我是否找到其他東西。

0

您的支票不正確。你在做!wp_admin()。當您在管理控制檯中使用而不是時,情況確實如此,這與您想要的完全相反。

add_action('init', 'blockusers_init'); 

function blockusers_init() 
{ 
    if (is_admin() && !current_user_can('administrator') && !(defined('DOING_AJAX') && DOING_AJAX)) 
    { 
     wp_redirect(home_url()); 
     exit; 
    } 
} 

注意,它可以是current_user_can('subscriber')只定位用戶,或!current_user_can('administrator')瞄準所有非管理員,這意味着編輯,撰稿人等

整個情況是怪異,但。通常情況下,用戶可以訪問管理面板,但他們只能看到儀表板及其配置文件。如果他們實際上可以看到整個管理面板,則應該調查原因,因爲它不正常。
P.S.你確定他們沒有給你管理員帳戶,而不是訂閱調查?

+0

嗨,是的,你是絕對正確的。 '! '在那裏是錯誤的。我實際上並沒有在我的代碼中使用它。我確定用戶是訂戶,我創建了另一個用戶,所以我可以測試,結果是一樣的:所有用戶都可以訪問所有的管理菜單項。 是的,整個情況很奇怪。任何有關可能導致這種奇怪行爲的建議? – user3015234

+0

@ user3015234沒有明確的建議,因爲我不知道他們使用什麼樣的插件和主題。但我想一個好的開始將是逐個禁用插件,看看它是否改變了什麼,然後改變主題。如果它有幫助,你至少知道在哪裏看得更遠。另外,請檢查設置中的默認新角色是否是訂閱者,而不是其他內容。 –

相關問題