WordPress

Set Default Theme, Logo And Menu For Subsites In WordPress Multisite

Setting a Default Theme for all Subsites in a WordPress Multisite

If you want all the sites on your network to use the same theme, but would rather not use the current WordPress default theme, you would have to manually switch to the preferred theme each time you created a new site.

1. Install the multisite network as given in What Is Multisite? How To Create a WordPress Multisite Network?

2. Insert code to set the default theme for subsites.

You can override the WordPress default theme by editing the wp-config.php file. Just insert the following code anywhere before the line where WordPress includes the wp-settings.php file.

define( 'WP_DEFAULT_THEME', 'your-default-theme' );
require_once(ABSPATH . 'wp-settings.php');

Note: You’ll need to replace “your-default-theme” with the name of the theme you want to set as the default across your network.

3. Now create subsite for your multisite network. It will come with the theme activated which you set as default.

Setting a Default Logo for all subsites in a WordPress Multisite

The logo can be set as the background image in the header.

If you insert the below code in style.css of the theme, this logo will be automatically displayed in all subsites when the theme is activated. However, if you do not want to make any changes in your theme, you’ll have to create a custom plugin and add the code there. Be sure to network enable the plugin so that the changes are applied to all subsites.

1. Upload the logo image on your main site. Let’s assume you’ve named it mylogo.

2. Get the absolute URL of the image, and use this in your CSS.

.header-image .site-header .site-title a {
   background: url(http://main.com/wp-content/uploads/2020/01/mylogo.png) no-repeat left;
   padding: 0;
}

Note: Please refer to your selectors instead of this.

Setting a Default Menu for all subsites in a WordPress Multisite

If you want to set a default menu, this would mean you would want to have certain pages created also. This could be complicated but not impossible. Let’s consider that we have to add a homepage and a ‘Home’ link in the primary navigation menu (you can similarly add additional pages). The below code can be inserted into functions.php of the theme. If you wanted to insert the code in a custom plugin, you would have to make the plugin multisite compatible and then tweak the code and insert it.

// add a function which will be called when a new site is created

add_action( 'wpmu_new_blog', 'create_menu_on_site_creation' );

function create_menu_on_site_creation( $blog_id ) {
    switch_to_blog( $blog_id );

    $menu_name = 'Primary Menu';
    $menu_exists = wp_get_nav_menu_object( 'Primary Menu' );

    // If no menu is selected as the Primary menu and a menu with name 'Primary Menu’ does not exist
    // we have to create a Primary Menu
    if ( ! has_nav_menu( 'primary' ) && ! $menu_exists ) {
        $menu_id = wp_create_nav_menu( $menu_name );
        // Add Home menu as default link in the menu
        wp_update_nav_menu_item( $menu_id, 0, array(
        'menu-item-title' => __( 'Home' ),
        'menu-item-classes' => 'home',
        'menu-item-url' => home_url( '/' ),
        'menu-item-status' => 'publish' ) );

        // Assign menu to Primary location
        $locations = get_theme_mod( 'nav_menu_locations' );
        $locations[ 'menu-1' ] = $menu_id;
        set_theme_mod( 'nav_menu_locations', $locations );
    }
    restore_current_blog();
}

This will work for WordPress themes which have ‘menu-1’ as the Primary Menu navigation id.

This idea would work for any WordPress theme (the hooks will differ though). If you would want certain templates to be applied for pages created, this can be done as well, but this would be a better topic for another day.

Het Patel

I'm a Professional WordPress Developer with 5+ years of web design and development experience including custom websites for small & enterprise businesses. I also have acquired fame and popularity in API Integration & Development and am responsible for producing high-quality solutions for the company customers, Bringing a deep understanding of Modern HTML, JavaScript, and CSS, Plugin Customization, Theme Customization, Theme Creation, creating websites from scratch, and the software development life cycle, And strong ability to execute and implement standard software architecture patterns.

Share
Published by
Het Patel

Recent Posts

Testing hk

Testing

2 years ago

Create and Used PIPE in angular

In this article, we have to show Create and Used PIPE in angular

2 years ago

Operation

Testing

2 years ago

Create and Used PIPE in angular

In this article, we have to show Create and Used PIPE in angular

2 years ago

Create and Used PIPE in angular

In this article, we have to show Create and Used PIPE in angular

2 years ago

TETS NEW

test

3 years ago