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' );

Related posts

1 comment

  1. 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' );
    

Comments are closed.