2011-10-06 88 views
1

在WordPress中,我試圖讓腳本工作,它運行在我的插件目錄中,並由瀏覽器通過它的URL直接調用,例如, www.example.org/wp-content/plugins/myplugin/script.php。該腳本只能用於登錄管理員。如何爲WordPress管理員運行腳本,但在「/ wp-admin」之外運行腳本?

我試圖做的是在腳本的開頭部分包含/wp-admin/admin.php,引導WordPress的功能,並檢查是否有足夠的權限。然而,在這個引導過程中,WordPress會將我重定向到登錄屏幕,即使我已經登錄也很困難。也就是說,因爲WordPress驗證cookie在/ wp-admin目錄之外不可用

所以,因爲我的方法顯然不起作用,我想知道:在admin-directory之外運行WordPress-admin-scripts的最佳實踐是什麼?我可以使用一些「包裝」-script inside/wp-admin,就像admin-ajax.php用於AJAX調用一樣嗎?或者不是它甚至是WordPress的,但只是我的服務器配置,auth-cookie僅在/ wp-admin中可用?

此外,請注意,它是而不是註冊管理菜單項的選項,因爲該腳本應作爲彈出窗口加載,並且在菜單中不可用。

在此先感謝您的幫助。

回答

0

好的。因爲似乎沒有人知道如何處理這個問題,所以我只是誤用了admin-ajax.php作爲我的管理腳本的包裝腳本。這不是一個非常漂亮的解決方案,但它的工作原理。

請注意,在AJAX模式下使用時,某些功能無法正常工作,如wp_die。如果任何人都必須處理同樣的問題:您將需要重寫這些函數以使其也可以在AJAX模式下工作。

1

前一段時間,我created a function,檢查中是否有人登錄並具有管理員權限,如果是這樣,它運行你想要的代碼:

要使用它,把這個代碼在你functions.php文件:

<?php 
function admin_level($user_login=''){ 
    global $current_user; 
    get_currentuserinfo(); 

    if(current_user_can('level_10')) { 
     if ($user_login!=''){ 
      if($current_user->user_login==$user_login){ 
       return true; 
      } else { 
       return false; 
      } 
     } else { 
      return true; 
     } 
    } else { 
     return false; 
    } 
} 
?> 

現在,這裏有一個如何創造一個用戶是否爲「admin」的登錄代碼只運行並具有管理員權限的「試驗區」的一個例子:

<?php 

//Test Area 

    //Only run following code if logged in as admin 

    if(admin_level($user_login = 'adminuser')){ 

     //run your awesome code right here, adminuser!!! 

    } 

//End Test Area 

?> 

我在開發/測試過程中一直使用這個功能,當我只需要登錄時運行某些內容,而無需其他用戶看到它。

謝謝,我希望這有助於!

相關問題