#wordpress-theming
#wordpress-тематизация
Вопрос:
Я пытаюсь добавить дополнительное пользовательское меню в тему WordPress. Я зарегистрировал меню и местоположение в functions.php файл, создал новый шаблон страницы и добавил меню. Однако всякий раз, когда я добавляю элементы в меню, оно заменяет все в главном заголовке, но также добавляет его туда, где мне это нужно.
Любая помощь будет принята с благодарностью.
Спасибо
Джек
Ниже мой functions.php досье. Меню, которое я пытаюсь добавить, находится прямо внизу под названием about-menu
<?php
function cc_mime_types( $mimes ){
$mimes['svg'] = 'image/svg xml';
return $mimes;
}
add_filter( 'upload_mimes', 'cc_mime_types' );
?>
<?php add_theme_support( 'post-thumbnails' ); ?>
<?php
add_filter('next_posts_link_attributes', 'posts_link_next');
add_filter('previous_posts_link_attributes', 'posts_link_prev');
function posts_link_next() {
return 'class="next-button"';
}
function posts_link_prev() {
return 'class="prev-button"';
}; ?>
<?php add_filter('show_admin_bar', '__return_false'); ?>
<?php
/**
* Register our sidebars and widgetized areas.
*
*/
function arphabet_widgets_init() {
register_sidebar( array(
'name' => 'index-sidebar',
'id' => 'index-sidebar-widget',
'before_widget' => '<div class="sidebar-widget">',
'after_widget' => '</div>',
'before_title' => '<h2 class="widget-sidebar">',
'after_title' => '</h2>',
) );
register_sidebar( array(
'name' => 'announcement',
'id' => 'announcement',
'before_widget' => '<div class="announcement">',
'after_widget' => '</div>',
'before_title' => '<h2 class="announcement-title">',
'after_title' => '</h2>',
) );
register_sidebar( array(
'name' => 'tweets',
'id' => 'tweets',
'before_widget' => '',
'after_widget' => '',
'before_title' => '',
'after_title' => '',
) );
register_sidebar( array(
'name' => 'events',
'id' => 'widget-events',
'before_widget' => '',
'after_widget' => '',
'before_title' => '',
'after_title' => '',
) );
}
add_action( 'widgets_init', 'arphabet_widgets_init' );
/*
* Alters event's archive titles
*/
function tribe_alter_event_archive_titles ( $original_recipe_title, $depth ) {
// Modify the titles here
// Some of these include %1$s and %2$s, these will be replaced with relevant dates
$title_upcoming = 'Upcoming Events'; // List View: Upcoming events
$title_past = 'Past Events'; // List view: Past events
$title_range = 'Events for %1$s - %2$s'; // List view: range of dates being viewed
$title_month = 'Events for %1$s'; // Month View, %1$s = the name of the month
$title_day = 'Events for %1$s'; // Day View, %1$s = the day
$title_all = 'All events for %s'; // showing all recurrences of an event, %s = event title
$title_week = 'Events for week of %s'; // Week view
// Don't modify anything below this unless you know what it does
global $wp_query;
$tribe_ecp = Tribe__Events__Main::instance();
$date_format = apply_filters( 'tribe_events_pro_page_title_date_format', tribe_get_date_format( true ) );
// Default Title
$title = $title_upcoming;
// If there's a date selected in the tribe bar, show the date range of the currently showing events
if ( isset( $_REQUEST['tribe-bar-date'] ) amp;amp; $wp_query->have_posts() ) {
if ( $wp_query->get( 'paged' ) > 1 ) {
// if we're on page 1, show the selected tribe-bar-date as the first date in the range
$first_event_date = tribe_get_start_date( $wp_query->posts[0], false );
} else {
//otherwise show the start date of the first event in the results
$first_event_date = tribe_event_format_date( $_REQUEST['tribe-bar-date'], false );
}
$last_event_date = tribe_get_end_date( $wp_query->posts[ count( $wp_query->posts ) - 1 ], false );
$title = sprintf( $title_range, $first_event_date, $last_event_date );
} elseif ( tribe_is_past() ) {
$title = $title_past;
}
// Month view title
if ( tribe_is_month() ) {
$title = sprintf(
$title_month,
date_i18n( tribe_get_option( 'monthAndYearFormat', 'F Y' ), strtotime( tribe_get_month_view_date() ) )
);
}
// Day view title
if ( tribe_is_day() ) {
$title = sprintf(
$title_day,
date_i18n( tribe_get_date_format( true ), strtotime( $wp_query->get( 'start_date' ) ) )
);
}
// All recurrences of an event
if ( function_exists('tribe_is_showing_all') amp;amp; tribe_is_showing_all() ) {
$title = sprintf( $title_all, get_the_title() );
}
// Week view title
if ( function_exists('tribe_is_week') amp;amp; tribe_is_week() ) {
$title = sprintf(
$title_week,
date_i18n( $date_format, strtotime( tribe_get_first_week_day( $wp_query->get( 'start_date' ) ) ) )
);
}
if ( is_tax( $tribe_ecp->get_event_taxonomy() ) amp;amp; $depth ) {
$cat = get_queried_object();
$title = '<a href="' . esc_url( tribe_get_events_link() ) . '">' . $title . '</a>';
$title .= ' amp;#8250; ' . $cat->name;
}
return $title;
}
add_filter( 'tribe_get_events_title', 'tribe_alter_event_archive_titles', 11, 2 );
?>
<?php
add_filter('wp_nav_menu_objects', 'ad_filter_menu', 10, 2);
function ad_filter_menu($sorted_menu_objects, $args) {
// check for the right menu to filter
// here we check for the menu with name 'Posts Menu'
// given that you call it in you theme with:
// wp_nav_menu( array( 'menu' => 'Posts Menu' ) );
// if you call the menu using theme_location, eg:
// wp_nav_menu( array( 'theme_location' => 'top_manu' ) );
// check for:
// if ($args->theme_location != 'top_menu')
if ($args->menu != 'Parents Menu')
return $sorted_menu_objects;
// edit the menu objects
foreach ($sorted_menu_objects as $menu_object) {
// searching for menu items linking to posts or pages
// can add as many post types to the array
if ( in_array($menu_object->object, array('post', 'page', 'any_post_type')) ) {
// set the title to the post_thumbnail if available
// thumbnail size is the second parameter of get_the_post_thumbnail()
$menu_object->title = has_post_thumbnail($menu_object->object_id) ? get_the_post_thumbnail($menu_object->object_id, 'full') . '<span class="outer"><span>' . $menu_object->title . "</span></span>": $menu_object->title;
}
}
return $sorted_menu_objects;
};
?>
<?php
function register_my_menu() {
register_nav_menu('about-menu',__( 'About Menu' ));
}
add_action( 'init', 'register_my_menu' );
?>
Следующий фрагмент кода взят из шаблона моей страницы, в который я хочу добавить
меню.
<?php
/*
Template Name: About Us Page
*/
?>
<?php get_header();?>
<div class="main">
<div class="page-top-banner" id="page-four-banner">
<h1><span>About</span></h1>
</div>
<div class="parental-inner">
<?wp_nav_menu( array( 'theme_location' => 'about-menu', 'container_class' => 'about_menu_class' ) ); ?>
</div>
<?php get_footer();?>
Ответ №1:
Удалите вашу функцию register_my_menu из functions php и замените следующим:
Удалите это:
function register_my_menu() {
register_nav_menu('about-menu',__( 'About Menu' ));
}
add_action( 'init', 'register_my_menu' );
Замените на это:
//nav
register_nav_menus(array(
'main-menu' => __('Main Menu'),
'about-menu' => __('About Menu'),
));
Правильно ли это отображается в шаблоне страницы?
Комментарии:
1. Привет, спасибо, что перезвонил мне. Я изменил код, и он отображается на странице, как и должно быть, также перезаписывает основную навигацию на сайте. Очень странно, и я не могу понять это.
2. Ах, вам нужно указать местоположение меню для вашей основной навигации по сайту, а затем указать в своей теме, где вы хотите, чтобы это отображалось. Я отредактировал приведенный выше код, чтобы вы могли видеть изменения.
3. Большое спасибо за вашу помощь: D
4. Никаких проблем, если бы мой ответ помог вам, и вы могли бы отметить мой ответ как правильный, это было бы здорово! 🙂