我正在编写一个插件,它将列出一组自定义表中的一些条目。我使用以下WordPress功能为插件添加了主页:
// Add menu and pages to WordPress admin area
add_action(\'admin_menu\', \'myplugin_create_top_level_menu\');
function myplugin_create_top_level_menu() {
add_menu_page(\'MyPlugin\', \'MyPlugin\', \'manage_options\', \'myplugin-top-level-admin-menu\');
add_submenu_page(\'myplugin-top-level-admin-menu\', \'MyPlugin Admin Page\', \'Admin Page\', \'manage_options\', \'myplugin-top-level-admin-menu\', \'myplugin_admin_page\');
}
function myplugin_admin_page {
// Code to display the admin page for my plugin (both php and html code)
// This includes the following seudo code (in php)
foreach ($results_from_db as $result) {
// CODE TO DISPLAY RESULTS IN AN HTML TABLE *** I NEED HELP HERE ***
}
}
现在,如果仔细阅读上述代码,您会注意到有一条注释
\'I NEED HELP HERE\'; 以下是更多详细信息:
我知道如何在我创建的管理页面上显示所有内容。管理页面将读取自定义表,并将结果显示为HTML表行。
我只需要将每一行链接到一个页面,让我们调用它\'Entry Details Page\'. 这个想法是,对于HTML表中的每一行,都会有一个链接,当我单击该链接时,它会将我带到另一个页面,该页面会显示关于该行的更多详细信息。
我正在考虑使用如上所述的add\\u submenu\\u页面here, 但老实说,我不知道如何使用它以及如何将其包含在代码中。我尝试过这样的方法,但我认为它是错误的:
function myplugin_admin_page {
// Code to display the admin page for my plugin (both php and html code)
// This includes the following seudo code (in php)
foreach ($results_from_db as $result) {
// CODE TO DISPLAY RESULTS IN AN HTML TABLE *** I NEED HELP HERE ***
// The following line of code is incorrect, but to show you the idea
echo \'<a href="\' . add_submenu_page(NULL,\'Entry Details Page\',\'Entry Details Page\',\'manage_options\',\'details-page\', \'myplugin_details_page\'); . \'">View</a>\';
}
}
myplugin_details_page () {
// Code to display the details page
}
现在,我面临的两个问题是:
如何正确添加详细信息页面(很明显,我在第二段代码中所做的操作不正确)如何在详细信息页面中包含参数(我需要传递行id才能查看详细信息)我想我真的很快就可以解决这个问题了,但是我找不到足够的文档来完成它,所以请帮忙,我真的很感谢你。
干杯
最合适的回答,由SO网友:s_ha_dum 整理而成
我不再像以前那样相信我知道你在做什么。
// Add menu and pages to WordPress admin area
add_action(\'admin_menu\', \'myplugin_create_top_level_menu\');
function myplugin_create_top_level_menu() {
// This is the menu on the side
add_menu_page(
\'MyPlugin\',
\'MyPlugin\',
\'manage_options\',
\'myplugin-top-level-page\'
);
// This is the first page that is displayed when the menu is clicked
add_submenu_page(
\'myplugin-top-level-page\',
\'MyPlugin Top Level Page\',
\'MyPlugin Top Level Page\',
\'manage_options\',
\'myplugin-top-level-page\',
\'myplugin_top_level_page_callback\'
);
// This is the hidden page
add_submenu_page(
null,
\'MyPlugin Details Page\',
\'MyPlugin Details Page\',
\'manage_options\',
\'myplugin-details-page\',
\'myplugin_details_page_callback\'
);
}
function myplugin_top_level_page_callback() {
global $wpdb;
$results_from_db = $wpdb->get_results("SELECT * FROM myplugin_custom_table");
foreach ($results_from_db as $result) {
$id = $result->id;
$link = add_query_arg(
array(
\'page\' => \'myplugin-details-page\', // as defined in the hidden page
\'id\' => $id
),
admin_url(\'admin.php\')
);
echo \'<ul>\';
echo \'<li><a href="\'.$link.\'">\'.$id.\'</a><li>\';
echo \'</ul>\';
}
}
function myplugin_details_page_callback () {
// This function is to display the hidden page (html and php)
}
您在其中使用了两个额外的核心函数,请参考: