body onLoad on a specific WordPress page

2019-02-28 17:35发布

问题:

Using the latest Wordpress version (3.6), I am trying to apply:

<body onLoad="window.scroll(0, 150)">

To a specific landing page on my website so that the page scrolls to a specific point on page load.

Given the way that Wordpress is set up - with the body tags included in header.php - how can I echo the above code within the body tag for my specific page only, without applying it to the rest of my pages?

I am presuming something needs to go in here:

<body <?php body_class(); ?><?php my code in here?>>

回答1:

You don't need to apply the code to the <body> tag, see: https://stackoverflow.com/a/191318/1287812

This can be done in functions.php with the following code, and using the conditional tags mentioned by SrikanthAD:

add_action( 'wp_footer', 'b5f_on_load_script' );

function b5f_on_load_script()
{
    // Not our page, do nothing
    if( !is_page( 'about' ) )
        return;

    ?>
    <script type="text/javascript">
        window.onload = function() { alert( 'Inside specific page' ); };        
    </script>
    <?php           
};

Also see: How to use window.scroll to automatically scroll on pageload?



回答2:

For some reason, I was having difficulties using the above approach, however the logic was correct.

I have now instead registered the scroll script separately and enqueued it based on page template using:

wp_register_script( 'scroll', get_template_directory_uri() . '/js/scroll.js' );
if( is_page_template('my-landing-page.php') ) wp_enqueue_script( 'scroll' );

With: window.onload=function(){window.scroll(0, 140)}; as a separate file.

Thanks for all the help.



回答3:

You can use many of the conditional tags available in WordPress to get the desired functionality.

http://codex.wordpress.org/Conditional_Tags

Example:

 if ( is_page( 'about' ) ) { 
// do something
 } 

I agree with brasofilo, you don't necessarily have it include the conditional tag in your template. It can used anywhere, depending on your project.