插件:如何使管理页面中的链接在管理面板内打开

时间:2014-06-19 作者:user1633947

在编写插件时,我将菜单和子菜单添加到了管理页面。页面按预期加载和运行。我试图做的是在这些页面内创建一些链接,将参数传递给新页面。我即将完成这项工作,但页面总是在管理屏幕之外打开。我对这方面很陌生,完全被卡住了。

这是一个屏幕截图。

How can I get a link from an admin page to open inside of the admin panel?

下面是我调用的函数,用于获取post数据,该数据将把id传递给处理数据库编辑的页面。

add_action( \'admin_post_add_recid\', \'prefix_admin_add_recid\' );
function prefix_admin_add_recid() {        
    include( plugin_dir_path( __FILE__ ) . \'/management_tools/edit.php\' );
}
以及调用它的链接,其中1是我需要传递到编辑页面的id。

href="admin-post.php?action=add_recid&data=1"
如果你想无聊的话,下面是我做这件事的背景。我正在从非wordpress网站迁移内容。wordpress唯一不能适应的就是一些已经存在了一段时间的旧php数据库内容。我想把这个数据库代码放进一个插件中,这样它就可以在wordpress中进行管理,如果需要的话,可以进行备份和迁移。这是一个特定用途的插件,不会被分发。现有代码自创建以来没有被修改过,可能在wordpress中之后就不需要再修改了。所有数据库读取和插入代码都在插件内部工作。基本上,我真的很接近完成任务,而不必从头重写它,因为我没有预算。我只是找不到打开管理面板内的编辑/删除管理页面的方法。感谢您的阅读和提供的任何帮助。

2 个回复
SO网友:Ludo

使用参数调用同一页面,并根据参数包含内容:

if ( ! defined( \'ABSPATH\' ) ) {
    exit; // Exit if accessed directly.
}

define(PLUG_NAME, "my_admin");

//hook to add an item in the menu admin 
add_action(\'admin_menu\', \'my_admin_setup_menu\');


function my_admin_setup_menu(){
        //1st : title of the page, 2nd : title in the menu menu
        add_menu_page( \'My plugin page\', \'My plugin\', \'manage_options\', \'my_admin\', \'my_plugin_init\' );
}

function my_plugin_init(){

    //links inside the page
    $page_link1="<a href=\\"admin.php?page=".PLUG_NAME."&idp=1\\">link 1</a>";
    $page_link2="<a href=\\"admin.php?page=".PLUG_NAME."&idp=2\\">link 2</a>";
    $page_link3="<a href=\\"admin.php?page=".PLUG_NAME."&idp=3\\">link 3</a>";

    //get the id of the page we want to display 
    // then we include the page
    if (isset($_GET[\'idp\'])){

        $page =(int) $_GET[\'idp\'];

        switch ($page) {
            case 1:
                $page_inc="page1.php";
                break;
            case 2:
                $page_inc="page2.php";              
                break;
            case 3:
                $page_inc="page3.php";              
                break;
        }
        include( plugin_dir_path( __FILE__ ) . $page_inc);

    }else{  

        echo "<h1>My plugin home</h1>";
        //display the link in the main page
        echo $page_link1."<br/>";
        echo $page_link2."<br/>";
        echo $page_link3."<br/>";       
    }
}

?>

SO网友:sdexp

我不确定我是否完全理解了这个问题,但有wp_redirect 可以将用户重定向到其他URL的函数。

$url = admin_url("admin-post.php?action=add_recid&data=1");

if (wp_redirect($url)) {
    exit ;
}

结束

相关推荐

多站点wp-admin在转发URL后进入空白屏幕

我在家里的LAMP上安装了wordpress多站点(静态ip地址),在任何浏览器中使用我的ip。它似乎都能正常工作(我有四个子目录网络站点在其上运行)。今晚,我去了我的一个域注册商那里,将域名转发到我的静态ip地址(克隆方法)。不幸的是,如果我使用URL/wp管理员导航到wordpress站点,我无法访问任何网络站点上的仪表板(它只是在浏览器中显示一个空白屏幕)。虽然登录元不起作用,但各种联网网站的前端似乎工作正常(它完全不起作用……好像没有超链接)所以,从本质上讲,访问多站点的静态ip地址方法工作得很好