2012-01-11 159 views
0

我目前正在通過functions.php製作一個自定義的WordPress管理頁面。我希望此頁面基本上從SQL數據庫檢索信息(與WordPress無關)並將其顯示給訪問者。我可以做得很好,但是如果我將這些代碼粘貼到我的functions.php中,那麼無論哪個頁面,每個頁面請求都會運行這些SQL代碼?這裏是我的功能文件相當多:WordPress管理員的MySQL函數頁面

function mytheme_add_admin() { 
add_menu_page('Members', 'Members', 'moderate_comments', 'members', 'mytheme_admin'); 
} 

function mytheme_admin() { 
?> 
#all the code for my page here 
<?php } 

add_action('admin_menu', 'mytheme_add_admin'); 

的「#ALL代碼爲我的頁面在這裏」將是HTML和PHP位搶SQL數據。有沒有辦法讓這隻發生在查看特定的管理頁面?

回答

0

這將對每個頁面加載運行查詢,除非您在函數本身或(最好是)在add_action()調用周圍添加一個條件。有幾種方法只能在單個頁面上運行,但最簡單的兩種方法可能是使用wordpress內置的全局變量'pagenow'或使用$ _SERVER變量之一來執行相同的操作($ _SERVER ['' REQUEST_URI']例如)

if (in_array($GLOBALS['pagenow'], array(pages this should show up on))){ 
    add_action('admin_menu', 'mytheme_add_admin'); 
} 

if (in_array($_SERVER['REQUEST_URI'], array(pages this should show up on with path from root))){ 
    add_action('admin_menu', 'mytheme_add_admin'); 
}