2011-10-06 89 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 

?> 

我在开发/测试过程中一直使用这个功能,当我只需要登录时运行某些内容,而无需其他用户看到它。

谢谢,我希望这有助于!

相关问题