Link to file in plugin directory from wordpress template?

I know that plugins and theme files should be kept separate but for for internal use I need to do it this way.

In my themes header.php file I want to include a php file which just contains html, from my plugin directory.

Read More

The path is basically /wp-content/plugins/my_plugin/my-html.php

I can’t seem to figure out the proper code for wordpress to look in the plugins directory, and grab the my-html.php file from within the my_plugin folder. I want to include this file so the html in it is included in the header.php within my theme.

What would be the best way to go about this??

Related posts

5 comments

  1. In your main plugin file just define a constant containing the path of the plugin:

    $pluginpath = plugin_dir_path( __FILE__ );
    define('MY_AWESOME_PLUGIN_PATH', $pluginpath);
    

    After that in your header.php:

    include(MY_AWESOME_PLUGIN_PATH . 'html_file_name.html');
    
  2. Check out WP’s plugins_url function

    <?php
     echo '<img src="' . plugins_url( 'images/wordpress.png' , __FILE__ ) . '" > ';
     ?>
    

    check out more on the WordPress Codex

  3. If the plugins/my_plugin/my-html.php file is only going to output HTML, you could do it like this:

    plugins/my_plugin/my-html.php

    <?php
    function my_output() {
        $html = 'This is some HTML that should go in the header.';
        echo( $html );
    }
    

    themes/my_theme/header.php

    .
    .
    .
    if( function_exists( 'my_output' ) ) {
        my_output();
    }
    .
    .
    .
    
  4. You can include your files using

    include '../plugins/my_plugin/plugin.php';
    

    if the header of your plugin is in the right folder. .. goes back one folder to the wp-content, then u go to plugins/yourpluginfolder/phpfile.

  5. As I stated in my comment I think what you’re looking for, as it’s basically just adding HTML from a plugin into a theme, is a template tag.

    So in either your main plugin file, or a separate file you’ll want to do something like this:

    <?php
        // ADD TAG THAT CAN BE ADDED TO TEMPLATES
        function yourplugin_templatetag() {
            //you can echo out the lines of HTML here
            echo '<h1>This is a title.</h1>';
            echo '<p>This is the content of a paragraph.</p>';
            //Or you can close the PHP tags and just use regular HTML
            ?>
            <ul>
                <li>This is list item 1.</li>
                <li>This is list item 2.</li>
            </ul>
            <!--// Remember to re-open the PHP tags -->
        <?php }//yourplugin_templatetag()
    ?>
    

    Then, in the template where you want this to show up, which is your header.php, you want to place the template tag we created for the plugin right where you want it’s HTML to appear.

    <?php yourplugin_templatetag(); ?>
    

    If you made this a separate file you’ll want to require the file in your main plugin file like so:

    include( plugin_dir_path( __FILE__ ) . 'yourplugin_templatetag.php' );

    Of course name the file what you like, as well as the template tag, and if the files in an includes directory or whatever, make sure you include that in the path.

Comments are closed.