我正在使用Divi主题by ElegantTheme。我一直在尝试切换二级菜单和主菜单的位置。
据我所知,我需要和header.php in a child theme, 像they do for another modification on the secondary menu.
但坦率地说,我不知道该怎么改变。。。
我已经阅读了这段代码,但我还不清楚它的作用和应该更改什么。有人有线索吗?
Accepted answer & chosen solution丹的回答把我引向右边。所以我会接受他的回答。
从代码的角度来看,所需的更改并不简单,需要付出太多的努力。因此,我将保持主题现在的状态,不更改我的子主题中的任何内容。
目前,这个功能在我的开发中不是优先考虑的,我将使用二级菜单的视觉部分,而不是试图使其适合我的需要。
代码部件
header.php
<!DOCTYPE html>
<html <?php language_attributes(); ?>>
<head>
<meta charset="<?php bloginfo( \'charset\' ); ?>" />
<?php
elegant_description();
elegant_keywords();
elegant_canonical();
/**
* Fires in the head, before {@see wp_head()} is called. This action can be used to
* insert elements into the beginning of the head before any styles or scripts.
*
* @since 1.0
*/
do_action( \'et_head_meta\' );
$template_directory_uri = get_template_directory_uri();
?>
<link rel="pingback" href="<?php bloginfo(\'pingback_url\'); ?>" />
<script type="text/javascript">
document.documentElement.className = \'js\';
</script>
<?php wp_head(); ?>
</head>
<body <?php body_class(); ?>>
<?php
$product_tour_enabled = et_builder_is_product_tour_enabled();
$page_container_style = $product_tour_enabled ? \' style="padding-top: 0px;"\' : \'\'; ?>
<div id="page-container"<?php echo $page_container_style; ?>>
<?php
if ( $product_tour_enabled || is_page_template( \'page-template-blank.php\' ) ) {
return;
}
$et_secondary_nav_items = et_divi_get_top_nav_items();
$et_phone_number = $et_secondary_nav_items->phone_number;
$et_email = $et_secondary_nav_items->email;
$et_contact_info_defined = $et_secondary_nav_items->contact_info_defined;
$show_header_social_icons = $et_secondary_nav_items->show_header_social_icons;
$et_secondary_nav = $et_secondary_nav_items->secondary_nav;
$et_top_info_defined = $et_secondary_nav_items->top_info_defined;
$et_slide_header = \'slide\' === et_get_option( \'header_style\', \'left\' ) || \'fullscreen\' === et_get_option( \'header_style\', \'left\' ) ? true : false;
?>
<?php if ( $et_top_info_defined && ! $et_slide_header || is_customize_preview() ) : ?>
<?php ob_start(); ?>
<div id="top-header"<?php echo $et_top_info_defined ? \'\' : \'style="display: none;"\'; ?>>
<div class="container clearfix">
<?php if ( $et_contact_info_defined ) : ?>
<div id="et-info">
<?php if ( \'\' !== ( $et_phone_number = et_get_option( \'phone_number\' ) ) ) : ?>
<span id="et-info-phone"><?php echo et_sanitize_html_input_text( $et_phone_number ); ?></span>
<?php endif; ?>
<?php if ( \'\' !== ( $et_email = et_get_option( \'header_email\' ) ) ) : ?>
<a href="<?php echo esc_attr( \'mailto:\' . $et_email ); ?>"><span id="et-info-email"><?php echo esc_html( $et_email ); ?></span></a>
<?php endif; ?>
<?php
if ( true === $show_header_social_icons ) {
get_template_part( \'includes/social_icons\', \'header\' );
} ?>
</div> <!-- #et-info -->
<?php endif; // true === $et_contact_info_defined ?>
<div id="et-secondary-menu">
<?php
if ( ! $et_contact_info_defined && true === $show_header_social_icons ) {
get_template_part( \'includes/social_icons\', \'header\' );
} else if ( $et_contact_info_defined && true === $show_header_social_icons ) {
ob_start();
get_template_part( \'includes/social_icons\', \'header\' );
$duplicate_social_icons = ob_get_contents();
ob_end_clean();
printf(
\'<div class="et_duplicate_social_icons">
%1$s
</div>\',
$duplicate_social_icons
);
}
if ( \'\' !== $et_secondary_nav ) {
echo $et_secondary_nav;
}
et_show_cart_total();
?>
</div> <!-- #et-secondary-menu -->
</div> <!-- .container -->
</div> <!-- #top-header -->
<?php
$top_header = ob_get_clean();
/**
* Filters the HTML output for the top header.
*
* @since ??
*
* @param string $top_header
*/
echo apply_filters( \'et_html_top_header\', $top_header );
?>
<?php endif; // true ==== $et_top_info_defined ?>
<?php if ( $et_slide_header || is_customize_preview() ) : ?>
<?php ob_start(); ?>
<div class="et_slide_in_menu_container">
<?php if ( \'fullscreen\' === et_get_option( \'header_style\', \'left\' ) || is_customize_preview() ) { ?>
<span class="mobile_menu_bar et_toggle_fullscreen_menu"></span>
<?php } ?>
<?php
if ( $et_contact_info_defined || true === $show_header_social_icons || false !== et_get_option( \'show_search_icon\', true ) || class_exists( \'woocommerce\' ) || is_customize_preview() ) { ?>
<div class="et_slide_menu_top">
<?php if ( \'fullscreen\' === et_get_option( \'header_style\', \'left\' ) ) { ?>
<div class="et_pb_top_menu_inner">
<?php } ?>
<?php }
if ( true === $show_header_social_icons ) {
get_template_part( \'includes/social_icons\', \'header\' );
}
et_show_cart_total();
?>
<?php if ( false !== et_get_option( \'show_search_icon\', true ) || is_customize_preview() ) : ?>
<?php if ( \'fullscreen\' !== et_get_option( \'header_style\', \'left\' ) ) { ?>
<div class="clear"></div>
<?php } ?>
<form role="search" method="get" class="et-search-form" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
<?php
printf( \'<input type="search" class="et-search-field" placeholder="%1$s" value="%2$s" name="s" title="%3$s" />\',
esc_attr__( \'Search …\', \'Divi\' ),
get_search_query(),
esc_attr__( \'Search for:\', \'Divi\' )
);
?>
<button type="submit" id="searchsubmit_header"></button>
</form>
<?php endif; // true === et_get_option( \'show_search_icon\', false ) ?>
<?php if ( $et_contact_info_defined ) : ?>
<div id="et-info">
<?php if ( \'\' !== ( $et_phone_number = et_get_option( \'phone_number\' ) ) ) : ?>
<span id="et-info-phone"><?php echo et_sanitize_html_input_text( $et_phone_number ); ?></span>
<?php endif; ?>
<?php if ( \'\' !== ( $et_email = et_get_option( \'header_email\' ) ) ) : ?>
<a href="<?php echo esc_attr( \'mailto:\' . $et_email ); ?>"><span id="et-info-email"><?php echo esc_html( $et_email ); ?></span></a>
<?php endif; ?>
</div> <!-- #et-info -->
<?php endif; // true === $et_contact_info_defined ?>
<?php if ( $et_contact_info_defined || true === $show_header_social_icons || false !== et_get_option( \'show_search_icon\', true ) || class_exists( \'woocommerce\' ) || is_customize_preview() ) { ?>
<?php if ( \'fullscreen\' === et_get_option( \'header_style\', \'left\' ) ) { ?>
</div> <!-- .et_pb_top_menu_inner -->
<?php } ?>
</div> <!-- .et_slide_menu_top -->
<?php } ?>
<div class="et_pb_fullscreen_nav_container">
<?php
$slide_nav = \'\';
$slide_menu_class = \'et_mobile_menu\';
$slide_nav = wp_nav_menu( array( \'theme_location\' => \'primary-menu\', \'container\' => \'\', \'fallback_cb\' => \'\', \'echo\' => false, \'items_wrap\' => \'%3$s\' ) );
$slide_nav .= wp_nav_menu( array( \'theme_location\' => \'secondary-menu\', \'container\' => \'\', \'fallback_cb\' => \'\', \'echo\' => false, \'items_wrap\' => \'%3$s\' ) );
?>
<ul id="mobile_menu_slide" class="<?php echo esc_attr( $slide_menu_class ); ?>">
<?php
if ( \'\' == $slide_nav ) :
?>
<?php if ( \'on\' == et_get_option( \'divi_home_link\' ) ) { ?>
<li <?php if ( is_home() ) echo( \'class="current_page_item"\' ); ?>><a href="<?php echo esc_url( home_url( \'/\' ) ); ?>"><?php esc_html_e( \'Home\', \'Divi\' ); ?></a></li>
<?php }; ?>
<?php show_page_menu( $slide_menu_class, false, false ); ?>
<?php show_categories_menu( $slide_menu_class, false ); ?>
<?php
else :
echo( $slide_nav );
endif;
?>
</ul>
</div>
</div>
<?php
$slide_header = ob_get_clean();
/**
* Filters the HTML output for the slide header.
*
* @since ??
*
* @param string $top_header
*/
echo apply_filters( \'et_html_slide_header\', $slide_header );
?>
<?php endif; // true ==== $et_slide_header ?>
<?php ob_start(); ?>
<header id="main-header" data-height-onload="<?php echo esc_attr( et_get_option( \'menu_height\', \'66\' ) ); ?>">
<div class="container clearfix et_menu_container">
<?php
$logo = ( $user_logo = et_get_option( \'divi_logo\' ) ) && \'\' != $user_logo
? $user_logo
: $template_directory_uri . \'/images/logo.png\';
ob_start();
?>
<div class="logo_container">
<span class="logo_helper"></span>
<a href="<?php echo esc_url( home_url( \'/\' ) ); ?>">
<img src="<?php echo esc_attr( $logo ); ?>" alt="<?php echo esc_attr( get_bloginfo( \'name\' ) ); ?>" id="logo" data-height-percentage="<?php echo esc_attr( et_get_option( \'logo_height\', \'54\' ) ); ?>" />
</a>
</div>
<?php
$logo_container = ob_get_clean();
/**
* Filters the HTML output for the logo container.
*
* @since ??
*
* @param string $logo_container
*/
echo apply_filters( \'et_html_logo_container\', $logo_container );
?>
<div id="et-top-navigation" data-height="<?php echo esc_attr( et_get_option( \'menu_height\', \'66\' ) ); ?>" data-fixed-height="<?php echo esc_attr( et_get_option( \'minimized_menu_height\', \'40\' ) ); ?>">
<?php if ( ! $et_slide_header || is_customize_preview() ) : ?>
<nav id="top-menu-nav">
<?php
$menuClass = \'nav\';
if ( \'on\' == et_get_option( \'divi_disable_toptier\' ) ) $menuClass .= \' et_disable_top_tier\';
$primaryNav = \'\';
$primaryNav = wp_nav_menu( array( \'theme_location\' => \'primary-menu\', \'container\' => \'\', \'fallback_cb\' => \'\', \'menu_class\' => $menuClass, \'menu_id\' => \'top-menu\', \'echo\' => false ) );
if ( \'\' == $primaryNav ) :
?>
<ul id="top-menu" class="<?php echo esc_attr( $menuClass ); ?>">
<?php if ( \'on\' == et_get_option( \'divi_home_link\' ) ) { ?>
<li <?php if ( is_home() ) echo( \'class="current_page_item"\' ); ?>><a href="<?php echo esc_url( home_url( \'/\' ) ); ?>"><?php esc_html_e( \'Home\', \'Divi\' ); ?></a></li>
<?php }; ?>
<?php show_page_menu( $menuClass, false, false ); ?>
<?php show_categories_menu( $menuClass, false ); ?>
</ul>
<?php
else :
echo( $primaryNav );
endif;
?>
</nav>
<?php endif; ?>
<?php
if ( ! $et_top_info_defined && ( ! $et_slide_header || is_customize_preview() ) ) {
et_show_cart_total( array(
\'no_text\' => true,
) );
}
?>
<?php if ( $et_slide_header || is_customize_preview() ) : ?>
<span class="mobile_menu_bar et_pb_header_toggle et_toggle_<?php echo esc_attr( et_get_option( \'header_style\', \'left\' ) ); ?>_menu"></span>
<?php endif; ?>
<?php if ( ( false !== et_get_option( \'show_search_icon\', true ) && ! $et_slide_header ) || is_customize_preview() ) : ?>
<div id="et_top_search">
<span id="et_search_icon"></span>
</div>
<?php endif; // true === et_get_option( \'show_search_icon\', false ) ?>
<?php
/**
* Fires at the end of the \'et-top-navigation\' element, just before its closing tag.
*
* @since 1.0
*/
do_action( \'et_header_top\' );
?>
</div> <!-- #et-top-navigation -->
</div> <!-- .container -->
<div class="et_search_outer">
<div class="container et_search_form_container">
<form role="search" method="get" class="et-search-form" action="<?php echo esc_url( home_url( \'/\' ) ); ?>">
<?php
printf( \'<input type="search" class="et-search-field" placeholder="%1$s" value="%2$s" name="s" title="%3$s" />\',
esc_attr__( \'Search …\', \'Divi\' ),
get_search_query(),
esc_attr__( \'Search for:\', \'Divi\' )
);
?>
</form>
<span class="et_close_search_field"></span>
</div>
</div>
</header> <!-- #main-header -->
<?php
$main_header = ob_get_clean();
/**
* Filters the HTML output for the main header.
*
* @since ??
*
* @param string $main_header
*/
echo apply_filters( \'et_html_main_header\', $main_header );
?>
<div id="et-main-area">
<?php
/**
* Fires after the header, before the main content is output.
*
* @since ??
*/
do_action( \'et_before_main_content\' );