Take the tour ×

I added a new menu item for my plugin like this:

  'Control Panel',
  'My Plugin',
  array($this, 'control_panel_page'),
  plugins_url('/images/menu_icon.png', __FILE__)

public function control_panel_page() {
  // My HTML goes here

However, I feel uncomfortable with the fact that all my HTML resides in PHP function (control_panel_page).

Is there an option/hack to point to HTML file rather than PHP function?

share|improve this question
in your public function just php include() the html file.... –  Barry Carlyon Aug 9 '12 at 12:23
add comment

2 Answers

up vote 1 down vote accepted

From the codex page:


share|improve this answer
add comment

You can use the file_get_contents() function to load a file into a string and write it's contents.

It doesn't exactly replaces the function with the file, but if your point in question is to have separate PHP file for the plugin logic, and another for the "HTML" page, than this should help.

The following code is enough to response the content of a "HTML" or any other text file rather than echoing from the PHP code. Plugin consists of two files:

  • file.php
  • hello.html


Plugin Name: HTML Include Plugin
Version: 1.0

    // 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';
        echo $file;



    This is a sample HTML content, but this can be any kind of text file...
share|improve this answer
add comment

Your Answer


