Jack1991 Jack1991 - 7 months ago 8
PHP Question

Is there a simpler way of enqueuing scripts for multiple page templates in Wordpress?

Besides the standard

page.php
in my Wordpress theme, I have an additional page template called
full-page.php
.
I want to enqueue an additional script (
script-4.js
) in
full-page.php
that I don't want to enqueue in the default template. At the moment I have enqueued them using the method below, with
if
and
else
statements – the same way in which my stylesheets are enqueued.

I'm wondering if there's a way to do this without enqueuing everything twice? For example, in
full-page.php
, is it possible for me to just enqueue
script-4.js
whilst getting it to automatically take scripts 1, 2 and 3 from the default template?

function enqueue_my_styles_and_scripts() {

if (is_page_template('page-templates/full-page.php')) {

wp_enqueue_script(
'mytheme-script-1',
get_template_directory_uri() . '/js/script-1.js' );

wp_enqueue_script(
'mytheme-script-2',
get_template_directory_uri() . '/js/script-2.js' );

wp_enqueue_script(
'mytheme-script-3',
get_template_directory_uri() . '/js/script-3.js' );

wp_enqueue_script(
'mytheme-script-4',
get_template_directory_uri() . '/js/script-4.js' );

}

else {

wp_enqueue_script(
'mytheme-script-1',
get_template_directory_uri() . '/js/script-1.js' );


wp_enqueue_script(
'mytheme-script-2',
get_template_directory_uri() . '/js/script-2.js' );


wp_enqueue_script(
'mytheme-script-3',
get_template_directory_uri() . '/js/script-3.js' );

}

add_action( 'wp_enqueue_scripts', 'enqueue_my_styles_and_scripts' );

Answer

Do you mean something like this:

function enqueue_my_styles_and_scripts() {  

wp_enqueue_script(
    'mytheme-script-1',
    get_template_directory_uri() . '/js/script-1.js' ); 

wp_enqueue_script(
    'mytheme-script-2',
    get_template_directory_uri() . '/js/script-2.js' );

wp_enqueue_script(
    'mytheme-script-3',
    get_template_directory_uri() . '/js/script-3.js' );

if (is_page_template('page-templates/full-page.php')) {

    wp_enqueue_script(
        'mytheme-script-4',
        get_template_directory_uri() . '/js/script-4.js' );

}

add_action( 'wp_enqueue_scripts', 'enqueue_my_styles_and_scripts' );