Cómo poner logotipo y menú predeterminados para los subsitios en WordPress Multisite

Lo primero es establecer nuestro tema como predeterminado y que se aplique a todos los subsitios.  Para ello hay que añadir un simple código, en wp-config.php . Se puede añadir en cualquier lugar, pero antes de la llamada al archivo wp-settings.php .

define ( 'WP_DEFAULT_THEME' , 'nombre-de-tu-tema' );

Simplemente reemplaza nombre-de-tu-tema con el nombre de su tema. Esta línea de código asegurará que su tema esté habilitado de forma predeterminada.

A continuación, toca establecer el mismo logotipo para todos los subsitios. Para esto, no puedo proporcionar un enfoque genérico ya que cada tema tendrá diferentes configuraciones. El logotipo se puede establecer como imagen de fondo en el encabezado. Usaremos este mismo enfoque para establecer el logotipo en todos los temas secundarios.

Agrega el siguiente código en style.css de tu tema, este logotipo se mostrará automáticamente en todos los subsitios cuando se active el tema. Sin embargo, si no deseas realizar ningún cambio en el tema, deberás crear un complemento personalizado (puedes usar el plugin Code Snippets) y agregar el código ahí..

  1. Sube la imagen del logo en tu sitio principal. Supongamos que lo ha llamado mi-logo.png .
  2. Obtén la URL absoluta de la imagen y úsala en tu CSS.
.header-image .site-header .site-title a {
   background: url(http://miweb.com/wp-content/uploads/2020/01/mi-logo.png) no-repeat left;
   padding: 0;
}

Proporcionar estilo para un atributo específico asegura que se aplicarán los cambios.

Configuración de un menú predeterminado para todos los subsitios en un WP multisitio

Si deseas establecer un menú predeterminado, esto significa que también querrás tener ciertas páginas creadas. Esto puede resultar complicado pero no imposible. Consideremos que tenemos que agregar una página de inicio y un enlace ‘Inicio’ en el menú de navegación principal (de manera similar, puede agregar páginas adicionales). 

El siguiente código los añades a functions.php de su tema hijo (o usando Code Snippets):

// 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 set 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 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[ 'primary' ] = $menu_id;
        set_theme_mod( 'nav_menu_locations', $locations );
    }
    restore_current_blog();
}