我正在开发一个插件,该插件目前在管理部分工作得很好,但我正在尝试将功能扩展到前端,并使用一个短代码来使用相同的功能。我有一个当前显示的表单,其代码如下:
function display_sheet_form($f=array())
{
$count = (isset($f[\'task_title\'])) ? count($f[\'task_title\']) : 3;
if ($count < 3) $count = 3;
echo \'<form name="add_sheet" id="dls-sus-modify-sheet" method="post" action="">\';
//some additional code here
echo \'<input type="hidden" name="mode" value="submitted" />\';
echo \'<input type="submit" name="Submit" class="button-primary" value="\'.esc_attr(\'Save\').\'" />\';
}
此表单没有操作,但它在子菜单中有一个函数回调,它知道要在同一页面中将此操作发布到该回调。子菜单的代码为:
add_submenu_page($this->admin_settings_slug.\'_sheets\', \'Add New Sheet\', \'Add New\', \'manage_signup_sheets\', $this->admin_settings_slug.\'_modify_sheet\', array(&$this, \'modify_sheet_page\'));
在那里,您可以看到回调函数是modify\\u sheet\\u页面。以下是此函数的代码:
function modify_sheet_page()
{
if (!current_user_can(\'manage_options\') && !current_user_can(\'manage_signup_sheets\')) {
wp_die( __( \'You do not have sufficient permissions to access this page.\' ) );
}
echo "in the modify sheet page";
// Set mode vars
$edit = (empty($_GET[\'sheet_id\'])) ? false : true;
$add = ($edit) ? false : true;
$submitted = (isset($_POST[\'mode\']) && $_POST[\'mode\'] == \'submitted\');
$err = 0;
// Process form if submitted
if($submitted) {
//process the form code
}
}
我创建的快捷码如下:
add_shortcode(\'create_sign_up_sheet\', array(&$this->admin, \'display_sheet_form\'));
目前,该操作是模板显示的页面,因为它不能使用子菜单页面的回调。如何发布到相同的
modify_sheet_page()
使用此短代码的函数?