Support » Allgemeine Fragen » Use Navigation from another WordPress Installation

  • Ich suche nach eine Lösung um den Header einer WordPress Seite A in eine andere WordPress Seite B zu integrieren. Dafür müssten wahrscheinlich auch CSS und andere <scripts> vom Header A in Header B mitgenommen werden.

    Es sind 2 separate WordPress-Installationen, aber auf dem selben Server:
    Wordpress A: domain.com/katalog (Storefront Theme, für einen WooCommerce Shop) https://woocommerce.com/storefront/
    Wordpress B: domain.com/informationen (TheGem Theme, für eine OnePage Seite) https://themeforest.net/item/thegem-creative-multipurpose-highperformance-wordpress-theme/16061685

    Eine Idee wäre einen separaten iFrame nur für die Navigation zu machen – was ich allerdings für keine gute Idee halte. Ich habe schon probiert den ausgegebenen HTML-Code des Headers A in Header B einzufügen, was aber nicht so ganz klappt.

    Gibt es vielleicht eine Lösung, die mit WordPress umsetzbar ist?

    Hier die Codes der beiden header.php-Dateien, falls hilfreich:

    Theme A (Storefront):

    <?php
    /**
     * The header for our theme.
     *
     * Displays all of the <head> section and everything up till <div id="content">
     *
     * @package storefront
     */
    
    ?><!DOCTYPE html>
    <html <?php language_attributes(); ?>>
    <head>
    <meta charset="<?php bloginfo( 'charset' ); ?>">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1.0, user-scalable=no">
    <link rel="profile" href="http://gmpg.org/xfn/11">
    <link rel="pingback" href="<?php bloginfo( 'pingback_url' ); ?>">
    
    <?php wp_head(); ?>
    </head>
    
    <body <?php body_class(); ?>>
    <div id="page" class="hfeed site">
    	<?php
    	do_action( 'storefront_before_header' ); ?>
    
    	<header id="masthead" class="site-header" role="banner" style="<?php storefront_header_styles(); ?>">
    		<div class="col-full">
    
    			<?php
    			/**
    			 * Functions hooked into storefront_header action
    			 *
    			 * @hooked storefront_skip_links                       - 0
    			 * @hooked storefront_social_icons                     - 10
    			 * @hooked storefront_site_branding                    - 20
    			 * @hooked storefront_secondary_navigation             - 30
    			 * @hooked storefront_product_search                   - 40
    			 * @hooked storefront_primary_navigation_wrapper       - 42
    			 * @hooked storefront_primary_navigation               - 50
    			 * @hooked storefront_header_cart                      - 60
    			 * @hooked storefront_primary_navigation_wrapper_close - 68
    			 */
    			do_action( 'storefront_header' ); ?>
    
    		</div>
    	</header><!-- #masthead -->
    
    	<?php
    	/**
    	 * Functions hooked in to storefront_before_content
    	 *
    	 * @hooked storefront_header_widget_region - 10
    	 */
    	do_action( 'storefront_before_content' ); ?>
    
    	<div id="content" class="site-content" tabindex="-1">
    		<div class="col-full">
    
    		<?php
    		/**
    		 * Functions hooked in to storefront_content_top
    		 *
    		 * @hooked woocommerce_breadcrumb - 10
    		 */
    		do_action( 'storefront_content_top' );`

    Theme B (TheGem):

    <?php
    	$thegem_page_id = is_singular() ? get_the_ID() : 0;
    	if(is_404() && get_post(thegem_get_option('404_page'))) {
    		$thegem_page_id = thegem_get_option('404_page');
    	}
    	if((is_post_type_archive('product') || is_tax('product_cat') || is_tax('product_tag')) && function_exists('wc_get_page_id')) {
    		$thegem_page_id = wc_get_page_id('shop');
    	}
    	$thegem_header_params = thegem_get_sanitize_page_header_data($thegem_page_id);
    	$thegem_effects_params = thegem_get_sanitize_page_effects_data($thegem_page_id);
    	if($thegem_effects_params['effects_page_scroller']) {
    		$thegem_header_params['header_hide_top_area'] = true;
    		$thegem_header_params['header_transparent'] = true;
    	}
    	$thegem_header_light = $thegem_header_params['header_menu_logo_light'] ? '_light' : '';
    ?>
    
    <!DOCTYPE html>
    <!--[if IE 7]>
    <html class="ie ie7" <?php language_attributes(); ?>>
    <![endif]-->
    <!--[if IE 8]>
    <html class="ie ie8" <?php language_attributes(); ?>>
    <![endif]-->
    <!--[if !(IE 7) | !(IE 8) ]><!-->
    <html <?php language_attributes(); ?>>
    <!--<![endif]-->
    <head>
    	<meta charset="<?php bloginfo('charset'); ?>">
    	<meta name="viewport" content="width=device-width, initial-scale=1.0" />
    	<link rel="profile" href="http://gmpg.org/xfn/11">
    	<link rel="pingback" href="<?php bloginfo('pingback_url'); ?>">
    	<?php wp_head(); ?>
    </head>
    
    <?php
    	$thegem_preloader_data = thegem_get_sanitize_page_preloader_data($thegem_page_id);
    ?>
    
    <body <?php body_class(); ?>>
    
    <?php do_action('gem_before_page_content'); ?>
    
    <?php if ( thegem_get_option('enable_page_preloader') || ( $thegem_preloader_data && !empty($thegem_preloader_data['enable_page_preloader']) ) ) : ?>
    	<div id="page-preloader"><div class="page-preloader-spin"></div></div>
    	<?php do_action('gem_after_page_preloader'); ?>
    <?php endif; ?>
    
    <div id="page" class="layout-<?php echo esc_attr(thegem_get_option('page_layout_style', 'fullwidth')); ?><?php echo esc_attr(thegem_get_option('header_layout') == 'vertical' ? ' vertical-header' : '') ; ?>">
    
    	<?php if(!thegem_get_option('disable_scroll_top_button')) : ?>
    		<a href="#page" class="scroll-top-button"></a>
    	<?php endif; ?>
    
    	<?php if(!$thegem_effects_params['effects_hide_header']) : ?>
    
    		<?php if(thegem_get_option('top_area_style') && !$thegem_header_params['header_hide_top_area'] && (thegem_get_option('header_layout') == 'vertical' && thegem_get_option('header_layout') != 'fullwidth_hamburger' || thegem_get_option('top_area_disable_fixed'))) : ?>
    			<?php get_template_part('top_area'); ?>
    		<?php endif; ?>
    
    		<div id="site-header-wrapper"<?php echo ($thegem_header_params['header_transparent'] ? ' class="site-header-wrapper-transparent"' : ''); ?>>
    
    			<?php if(thegem_get_option('header_layout') == 'fullwidth_hamburger') : ?><div class="hamburger-overlay"></div><?php endif; ?>
    
    			<header id="site-header" class="site-header<?php echo (thegem_get_option('disable_fixed_header') || thegem_get_option('header_layout') == 'vertical' ? '' : ' animated-header'); ?><?php echo thegem_get_option('header_on_slideshow') ? ' header-on-slideshow' : ''; ?>" role="banner">
    				<?php if(thegem_get_option('header_layout') == 'vertical') : ?><button class="vertical-toggle"><?php esc_html_e('Primary Menu', 'thegem'); ?><span class="menu-line-1"></span><span class="menu-line-2"></span><span class="menu-line-3"></span></button><?php endif; ?>
    				<?php if(thegem_get_option('top_area_style') && !$thegem_header_params['header_hide_top_area'] && !thegem_get_option('top_area_disable_fixed') && thegem_get_option('header_layout') != 'vertical' && thegem_get_option('header_layout') != 'fullwidth_hamburger') : ?>
    					<?php if($thegem_header_params['header_transparent']) : ?><div class="transparent-header-background" style="background-color: rgba(<?php echo esc_attr(implode(', ', hex_to_rgb(thegem_get_option('top_area_background_color')))); ?>, <?php echo intval($thegem_header_params['header_opacity'])/100; ?>);"><?php endif; ?>
    					<?php get_template_part('top_area'); ?>
    					<?php if($thegem_header_params['header_transparent']) : ?></div><?php endif; ?>
    				<?php endif; ?>
    
    				<?php if($thegem_header_params['header_transparent']) : ?><div class="transparent-header-background" style="background-color: rgba(<?php echo esc_attr(implode(', ', hex_to_rgb(thegem_get_option('top_background_color')))); ?>, <?php echo intval($thegem_header_params['header_opacity'])/100; ?>);"><?php endif; ?>
    				<div class="container<?php echo (thegem_get_option('header_layout') == 'fullwidth' || thegem_get_option('header_layout') == 'fullwidth_hamburger' ? ' container-fullwidth' : ''); ?>">
    					<div class="header-main logo-position-<?php echo esc_attr(thegem_get_option('logo_position', 'left')); ?><?php echo ($thegem_header_params['header_menu_logo_light'] ? ' header-colors-light' : ''); ?> header-layout-<?php echo esc_attr(thegem_get_option('header_layout')); ?> header-style-<?php echo esc_attr(thegem_get_option('header_layout') == 'vertical' || thegem_get_option('header_layout') == 'fullwidth_hamburger' ? 'vertical' : thegem_get_option('header_style')); ?>">
    						<?php if(thegem_get_option('logo_position', 'left') != 'right') : ?>
    							<div class="site-title">
    								<?php thegem_print_logo($thegem_header_light); ?>
    							</div>
    							<?php if(has_nav_menu('primary')) : ?>
    								<nav id="primary-navigation" class="site-navigation primary-navigation responsive" role="navigation">
    									<button class="menu-toggle dl-trigger"><?php esc_html_e('Primary Menu', 'thegem'); ?><span class="menu-line-1"></span><span class="menu-line-2"></span><span class="menu-line-3"></span></button>
    									<?php if(thegem_get_option('header_layout') == 'fullwidth_hamburger') : ?><button class="hamburger-toggle"><?php esc_html_e('Primary Menu', 'thegem'); ?><span class="menu-line-1"></span><span class="menu-line-2"></span><span class="menu-line-3"></span></button><?php endif; ?>
    									<?php wp_nav_menu(array('theme_location' => 'primary', 'menu_id' => 'primary-menu', 'menu_class' => 'nav-menu dl-menu styled ', 'container' => false, 'walker' => new TheGem_Mega_Menu_Walker)); ?>
    								</nav>
    							<?php endif; ?>
    						<?php else : ?>
    							<?php if(has_nav_menu('primary')) : ?>
    								<nav id="primary-navigation" class="site-navigation primary-navigation responsive" role="navigation">
    									<button class="menu-toggle dl-trigger"><?php esc_html_e('Primary Menu', 'thegem'); ?><span class="menu-line-1"></span><span class="menu-line-2"></span><span class="menu-line-3"></span></button>
    									<?php if(thegem_get_option('header_layout') == 'fullwidth_hamburger') : ?><button class="hamburger-toggle"><?php esc_html_e('Primary Menu', 'thegem'); ?><span class="menu-line-1"></span><span class="menu-line-2"></span><span class="menu-line-3"></span></button><?php endif; ?>
    									<?php wp_nav_menu(array('theme_location' => 'primary', 'menu_id' => 'primary-menu', 'menu_class' => 'nav-menu dl-menu styled ', 'container' => false, 'walker' => new TheGem_Mega_Menu_Walker)); ?>
    								</nav>
    							<?php endif; ?>
    							<div class="site-title">
    								<?php thegem_print_logo($thegem_header_light); ?>
    							</div>
    						<?php endif; ?>
    					</div>
    				</div>
    				<?php if($thegem_header_params['header_transparent']) : ?></div><?php endif; ?>
    			</header><!-- #site-header -->
    			<?php if(thegem_get_option('header_layout') == 'vertical') : ?>
    				<div class="vertical-menu-item-widgets">
    					<?php
    						add_filter( 'get_search_form', 'thegem_serch_form_vertical_header' );
    						get_search_form();
    						remove_filter( 'get_search_form', 'thegem_serch_form_vertical_header' );
    					?>
    					<div class="menu-item-socials socials-colored"><?php thegem_print_socials('rounded'); ?></div></div>
    			<?php endif; ?>
    		</div><!-- #site-header-wrapper -->
    
    	<?php endif; ?>
    
    	<div id="main" class="site-main">`
Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)
  • Verrückte Idee!
    Warum willst du das machen?
    Soll das Menü dann auf die andere Seite verlinken?
    Quick&Dirty Lösung:

    Kopiere den generierten Quelltext aus der einen Seite raus (also einfach im Browser)
    und füge ihn in den Header des anderen Themes ein.
    Dann musst du halt noch Pfade anpassen und evtl. css-dateien extra einbinden bzw. die relevanten Stile kopieren.

    Ansonsten wäre auch die iframe-Sache denkbar.

    Ein „sauberer“ Weg fällt mir nicht ein, vielleicht auch weil ich den Sinn der Aktion nicht wirklich verstehe.

    Thread-Ersteller phr4pp

    (@phr4pp)

    Danke schonmal für den Tipp. Werde ich nochmals genauer probieren.

    Kann ich die Navigation vielleicht (oder den gesamten <header>-Tag) irgendwie in eine separate Datei auslagern und diese dann in die beiden Themes einlesen?

    Die beiden Seiten sind Teil einer größeren Website. Ziel ist es, ein einheitliches Erscheinungsbild zu schaffen, indem die Navigation auf allen Seiten die Selbe ist. Ist also ein „großes“ Navigations-Menü, welches Links zu den beiden Seiten A & B beinhaltet.

    Thread-Ersteller phr4pp

    (@phr4pp)

    Eine theoretische Idee hätte ich noch:
    Ich könnte in beide Seiten das selbe Menü-Plugin installieren (z.B. UberMenu https://wpmegamenu.com/). Dann habe ich das Menü zwar doppelt (da 2x installiert), aber es sieht dann auf beiden Seiten gleich aus.

    Das müsste so funktionieren, oder?

    Sollte funktionieren.
    Ich denke, den code von der anderen Seite einzubinden ist weniger das Problem,
    aber die zweite Seite müsste ja dann auch auf die Datenbank der anderen zugreifen, was die Sache doch ziemlich kompliziert macht.
    Das Menü dann einfach verdoppeln ist zwar nicht so schön, aber wahrscheinlich die einfachste und schnellste Lösung.

    Thread-Ersteller phr4pp

    (@phr4pp)

    Habs probiert. Funktioniert wunderbar – abgesehen davon, dass das Menü jetzt mit dem Plugin doppelt installiert ist!

Ansicht von 5 Antworten - 1 bis 5 (von insgesamt 5)
  • Das Thema „Use Navigation from another WordPress Installation“ ist für neue Antworten geschlossen.