在编写插件时,我将菜单和子菜单添加到了管理页面。页面按预期加载和运行。我试图做的是在这些页面内创建一些链接,将参数传递给新页面。我即将完成这项工作,但页面总是在管理屏幕之外打开。我对这方面很陌生,完全被卡住了。
这是一个屏幕截图。
下面是我调用的函数,用于获取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中之后就不需要再修改了。所有数据库读取和插入代码都在插件内部工作。基本上,我真的很接近完成任务,而不必从头重写它,因为我没有预算。我只是找不到打开管理面板内的编辑/删除管理页面的方法。感谢您的阅读和提供的任何帮助。
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/>";
}
}
?>