WordPress.org

Ready to get started?Download WordPress

Forums

Change file on template trough plugin (6 posts)

  1. JNestudi
    Member
    Posted 2 years ago #

    Hi all!

    I'm trying to create a plugin to change the header file on the theme. The think is I use a theme that is regulary updated so I want to add some codes and hacks but I don't want to have to add this code each time the theme is updated. Any suggestion? I tried with

    add_filter('template_include','yoursite_template_include',1);
    function yoursite_template_include($template) {
        include('header.php');
        return $template;
    }

    and then in header include the theme header-php file and after make add some codes... but isn't working. I want to add some code after header.php (inside body tag).

    I think the easier way to do was this (including the original active theme file and adding then the code) but I didn't know enough the codex...

    Help!!

  2. Why not just use add_filter()?

    add_filter( 'wp_head' , 'yoursite_template_include' );

    It won't dramatically change the theme header, but will include your functions in the head.

    If you really want to replace the header then using child themes would be the easiest way to go.

    http://codex.wordpress.org/Child_Themes

  3. JNestudi
    Member
    Posted 2 years ago #

    Thanks but i need to add some codes into the body,just after the header.php. Is it possible? I see a lot of plugins that push content (like Adds or social sharing) into different parts. I need to push content right after the file header.php of my current template is loaded or instead load my own header (witch will call the header.php file on the current template and then add my codes).

    For you can understand better an example: I want to add a <h1>Hello world!</h1> right after the header of the template is loaded.

    Any possibilities?

  4. Thanks but i need to add some codes into the body,just after the header.php.

    Yes, it's possible but a little tricky. You can do the same thing using

    add_action( 'loop_start' , 'mh_main_loop_test' );
    function mh_main_loop_test($query) {
            global $mh_loop_count;
            if ( ( did_action( 'wp_enqueue_scripts' ) == 1 ) and $mh_loop_count == 0 ) {
                    $mh_loop_count++;
                    // do something HERE
            }
    }

    See that did_action( 'wp_enqueue_scripts' ) == 1? That let's you know that the wp_head is over and you are out of the header part and (probably) inside the first loop that ran right after the wp_head.

    You want to be inside the very first loop after that which is why I use a counter. If the counter is at zero then the code is run. Any other loops that start are ignored.

  5. JNestudi
    Member
    Posted 2 years ago #

    Great!!! This works!

    Thank you!

    I made a plugin to can add an image header without modify the theme 'cause it has regulary updates.

    Can you correct if my code is not clear (now is working but maynbe isn't good written :S)
    This is the code:

    add_action( 'loop_start' , 'mh_main_loop_test' );
    function mh_main_loop_test($query) {
            global $mh_loop_count;
            if ( ( did_action( 'wp_enqueue_scripts' ) == 1 ) and $mh_loop_count == 0 ) {
                    $mh_loop_count++;
                    // do something HERE
                    echo '<!-- JNestudi add Header Plugin START -->';
                    if (have_posts()) : while (have_posts()) : the_post();
                    //$img = the_post_thumbnail();
                    $domsxe = simplexml_load_string(get_the_post_thumbnail());
                    $thumbnailsrc = $domsxe->attributes()->src;
                    $thumbnailalt = $domsxe->attributes()->title;
                    if(isset($thumbnailsrc)) { ?> <img title="<?php echo $thumbnailalt; ?>" alt="<?php echo $thumbnailalt; ?>" src="<?php bloginfo('url'); ?>/wp-content/plugins/jn_header/timthumb.php?src=<?php echo $thumbnailsrc;?>&h=315&w=1024&zc=1" />
                <?php }
                    endwhile; endif;
                    echo '<!-- JNestudi add Header Plugin END -->';
            }
    }

    Thank you!

  6. That looks good to me, but test that code with other themes in case my test fails.

    I mean, my PHP is only slightly better than my CSS. ;)

    That code snippet I posted is in use with my child theme on my site and ought to work fine as a plugin too. When your plugin runs the HTML comments should let you know it's working and getting executed where you expect.

Topic Closed

This topic has been closed to new replies.

About this Topic