Multisitio: configuración del tema y las opciones cuando se crea un nuevo blog

2

Cuando se crea un nuevo blog en una instancia de WP Multisite, quiero poder configurar el tema predeterminado y las opciones de configuración

  • cree 2 menús (principal y secundario) y asócielos a las 2 ranuras que proporciona el tema

  • establezca varias opciones de tema como se define en la página de opciones de tema

¿Cuál es la mejor manera de lograr esto?

  • qué gancho debo usar. Voy a usar esto: ('WP_DEFAULT_THEME', 'tema-carpeta-nombre' en wp-config.php para establecer el tema predeterminado - a menos que esto impida un enganche necesario desde el disparo.

  • la forma más fácil de crear menús programados y asociarlos a las 'ranuras' del menú temático existente

pregunta anu 16.03.2011 - 13:20

3 respuestas

2

El mejor enganche que puedo encontrar es wpmu_new_blog (línea 1086, wp-includes/ms-functions.php , wpmu_create_blog() ): pasa 6 argumentos como tal;

do_action( 'wpmu_new_blog', $blog_id, $user_id, $domain, $path, $site_id, $meta );

$meta es una matriz de opciones del sitio inicial, que no debe confundirse con las opciones generadas por populate_options() .

La creación programática de menús de navegación puede resultar un poco complicada, ya que no hay una 'API' como tal, son una mezcla de publicaciones, términos meta y nav_menu , junto con algunas funciones disponibles como is_nav_menu_item() y wp_setup_nav_menu_item() .

Mi mejor consejo sería revisar wp-admin/nav-menus.php , ya que aquí se encuentra todo el código central para crear menús.

El uso de WP_DEFAULT_THEME debería estar bien, y probablemente sea el mejor enfoque también.

    
respondido por el TheDeadMedic 18.03.2011 - 23:15
5

Esto es un poco tarde, pero tuve que resolver la otra parte de esta pregunta por mi cuenta y pensé que lo compartiría.

Para crear un menú predeterminado y colocarlo en una ubicación de tema, necesitarás una ubicación preexistente en el tema y deberás asegurarte de que todas las páginas que vincules en tu menú también estén creadas.

En function.php de tu tema, registra cualquier ubicación de menú. Me registré dos:

function my_register_navs() {
    register_nav_menus(
        array( 'header-menu' => __( 'Header Menu' )
        , 'footer-menu' => __( 'Footer Menu' ) )
    );
}
add_action( 'init', 'my_register_navs' );

A continuación, deberá crear sus menús al crear el sitio. No utilicé un gancho para esto, sino que llamé a wpmu_create_blog manualmente, pero si lo prefieres, podrías conectarlo a wpmu_new_blog .

// Create the menus
$hdr_menu = array(
    'menu-name'     => 'Header Menu'
    , 'description' => 'The primary navigation menu for this website'
);
$header_menu = wp_update_nav_menu_object( 0, $hdr_menu );

$ftr_menu = array(
    'menu-name'     => 'Footer Menu'
    , 'description' =>  'The menu that appears at the bottom of most pages in this website'
);
$footer_menu = wp_update_nav_menu_object( 0, $ftr_menu );

// Set the menus to appear in the proper theme locations
$locations = get_theme_mod('nav_menu_locations');
$locations['header-menu'] = $header_menu;
$locations['footer-menu'] = $footer_menu;
set_theme_mod('nav_menu_locations', $locations);

Por último, deberá agregar elementos a los menús. Repita este código para cada elemento en cada menú.

// Build menu item
$menu_item = array(
    'menu-item-object-id'       => $page_id
    , 'menu-item-parent-id'     => 0
    , 'menu-item-position'      => $menu_order
    , 'menu-item-object'        => 'page'
    , 'menu-item-type'          => 'post_type'
    , 'menu-item-status'        => 'publish'
    , 'menu-item-title'         => $label
);

// Add to nav menu
wp_update_nav_menu_item( $header_menu, 0, $menu_item );

Espero que esto ayude! Aquí hay algunas referencias externas para usted:

respondido por el Eddie 21.01.2012 - 16:38
-1
function mysite_wpmu_new_blog($blog_id)
{
    switch_to_blog($blog_id);
    switch_theme('my-theme', 'my-theme');
    restore_current_blog();
}

add_action('wpmu_new_blog', 'mysite_wpmu_new_blog');

¡Esto funciona para mí!

    
respondido por el Wint 26.11.2012 - 12:51

Lea otras preguntas en las etiquetas