Wordpress: How to add Attribute to body

6k Views Asked by At

I want to add Scrollspy support to the nav-menu, for that I have to add extra attributes data-spy="scroll" data-target=".navbar" to the body tag.

Can I do that pragmatically without touching theme files?

3

There are 3 best solutions below

5
On BEST ANSWER

One way would be to:- Edit header.php And add those attributes to the body.

Alternative (without editing theme files) way would be to create a plugin which adds a js that adds those attributes to body. Something like this:-

$("body").attr( { data-spy:"scroll", data-target:".navbar" } );

EDIT After viewing Sevi's answers. The most suitable way is

function wp_body_classes( $classes )
{
    $classes[] = '" spy="scroll" data-target=".navbar';

    return $classes;
}
add_filter( 'body_class','wp_body_classes', 999 );
0
On

Pretty sure this can't be done without editing the theme files. You could try the jQuery method that tousif has mentioned above but I doubt it will work as it will most likely fire after ScrollSpy has been loaded.

Best way to do this is to edit your 'header.php' file and add the attributes to the <body> tag. You shouldn't edit the theme itself though, use a child theme - https://codex.wordpress.org/Child_Themes

0
On

Well, I found solution to my question:

function wp_body_classes( $classes )
{
    $classes[] = '" spy="scroll" data-target=".navbar';

    return $classes;
}
add_filter( 'body_class','wp_body_classes', 999 );