如何将“ADD_MENU_PAGE”指向Html文件而不是PHP函数

时间:2012-08-09 作者:Misha Moroshko

我为插件添加了一个新菜单项,如下所示:

add_menu_page(
  \'Control Panel\',
  \'My Plugin\',
  \'manage_options\',
  \'control-panel\',
  array($this, \'control_panel_page\'),
  plugins_url(\'/images/menu_icon.png\', __FILE__)
);

public function control_panel_page() {
  // My HTML goes here
}
然而,我对所有HTML都驻留在PHP函数中感到不安(control_panel_page).

是否有指向HTML文件而非PHP函数的选项/黑客?

2 个回复
最合适的回答,由SO网友:Joseph Leedy 整理而成

codex page:

$menu\\u slug(string)(必需)引用此菜单的slug名称(对于此菜单应是唯一的)。在版本3.0之前,这被称为文件(或句柄)参数。If the function parameter is omitted, the menu_slug should be the PHP file that handles the display of the menu page content. 默认值:无

SO网友:Miljenko Barbir

您可以使用file_get_contents() 函数将文件加载到字符串中并写入其内容。

它并不完全用文件替换函数,但如果您的问题是插件逻辑需要单独的PHP文件,而“HTML”页面需要另一个PHP文件,那么这应该会有所帮助。

以下代码足以响应“HTML”或任何其他文本文件的内容,而不是响应PHP代码。插件由两个文件组成:

文件。php你好。html文件。php

<?php
/*
Plugin Name: HTML Include Plugin
Version: 1.0
*/

if(is_admin())
{
    // register menu item
    add_action(\'admin_menu\', \'admin_menu_item\');    
}

function admin_menu_item()
{
    // add menu item
    add_menu_page(\'HTML Include Plugin\', \'HTML Include Plugin\', \'manage_options\', \'html-include-plugin\', \'admin_page\');
}

function admin_page()
{
    // write the contents of the HTML file
    $file = file_get_contents(\'hello.html\', FILE_USE_INCLUDE_PATH);
    if($file == false)
    {
        echo \'file not found\';
    }
    else
    {
        echo $file;
    }
}

?>
你好。html
<h1>Title</h1>
<p>
    This is a sample HTML content, but this can be any kind of text file...
</p>

结束

相关推荐