Вопрос или проблема
Я пытаюсь удалить виджет-область, называемую ‘Primary’, с определённой страницы на сайте. Вот функция, в которой я управляю боковыми панелями:
//ДОБАВИТЬ КАТЕГОРИИ В БОКОВУЮ ПАНЕЛЬ ОДИНОЧНОГО ПОСТА
add_action( 'genesis_sidebar', 'add_mysite_sidebar' );
function add_mysite_sidebar() {
if( get_post_type() == 'post' ){
dynamic_sidebar( 'News Categories' );
} else if( get_post_type() == 'events' ){
dynamic_sidebar( 'Event Categories' );
} else if( get_post_type() == 'documentlibrary' ){
dynamic_sidebar( 'Document Categories' );
} else if( get_post_type() == 'bp_members' ){
include(members_sidebar.php);
unregister_sidebar( 'sidebar' );
dynamic_sidebar( 'Members Widget' );
} else if( get_post_type() == 'bp_group' ){
include(groups_sidebar.php);
unregister_sidebar( 'sidebar' );
dynamic_sidebar( 'Groups Widget' );
}
}
Мне нужно удалить виджет-область ‘Primary’ на страницах групп и участников, но я не вижу, как это сделать, и на фронт-энде виджеты в этой области виджетов не находятся в общем контейнере, иначе я мог бы просто скрыть его.
Поскольку вы используете Genesis, почему бы вам просто не использовать макет, который не содержит боковую панель Primary? Опция макета должна быть доступна прямо под редактором (в виде метабокса).
Если вам всё ещё нужен код, используйте обычный CSS, чтобы удалить область боковой панели.
function remove_primary_sidebar() {
//Только если страницы с следующими ID
if (is_page(array('1', '2', '3'))) { ?>
<style type="text/css">
.sidebar-primary {display:none !important;}
</style>
<?php }
}
add_action('wp_head', 'remove_primary_sidebar');
Вы можете заставить макет быть на всю ширину с условием.
Этот код работает только в детских темах Genesis.
add_filter( 'genesis_pre_get_option_site_layout', 'wpsites_full_width_layout' );
function wpsites_full_width_layout( $opt ) {
if ( is_singular(array('bp_group', 'bp_group') ) ) {
$opt="full-width-content";
return $opt;
}
}
Источник: wpsites.net
Ответ или решение
Чтобы добиться полного ширинного макета для страниц пользовательских типов постов в вашей теме Genesis, вы можете выполнить следующие шаги. Если вы хотите удалить боковую панель «Primary» для страниц групп и участников, лучше всего использовать фильтры темы Genesis, чтобы изменить макет на «full-width». Ниже я приведу код, который позволит вам сделать это.
- Используйте фильтр для макета. Добавьте следующий код в файл
functions.php
вашей дочерней темы:
add_filter('genesis_pre_get_option_site_layout', 'wpsites_full_width_layout');
function wpsites_full_width_layout($opt) {
if (is_singular(array('bp_group', 'bp_members'))) {
return 'full-width-content';
}
return $opt; // Возвращаем оригинальный макет для других страниц
}
Этот код проверяет текущий тип поста и, если это страница пользователя bp_group
или bp_members
, устанавливает макет на «full-width-content». Это means, что боковая панель будет удалена для этих страниц.
- Удаление боковой панели с помощью CSS (если требуется). Если по каким-то причинам вы хотите скрывать содержимое боковой панели, то вы можете добавить следующий код CSS в файл стилей вашей темы или в панель управления CSS:
/* Скрываем боковую панель на страницах групп и участников */
body.page-id-1 .sidebar-primary, /* Замените 1 на идентификатор страницы */
body.page-id-2 .sidebar-primary { /* Замените 2 на другой идентификатор, если необходимо */
display: none !important;
}
Имейте в виду, что скрытие боковой панели через CSS не рекомендуется как основной метод, так как это просто делает элементы невидимыми, но они всё равно загружаются на страницу. Лучше использовать фильтры для изменения макета.
- Настройка виджетов (опционально). Если вы также хотите настроить показываемые виджеты только на определенных страницах:
add_action('genesis_sidebar', 'add_mysite_sidebar');
function add_mysite_sidebar() {
if (is_singular('events')) {
dynamic_sidebar('Event Categories');
} elseif (is_singular('documentlibrary')) {
dynamic_sidebar('Document Categories');
} elseif (is_singular('bp_members')) {
include('members_sidebar.php');
unregister_sidebar('sidebar');
dynamic_sidebar('Members Widget');
} elseif (is_singular('bp_group')) {
include('groups_sidebar.php');
unregister_sidebar('sidebar');
dynamic_sidebar('Groups Widget');
}
}
Таким образом, вы сможете управлять тем, какие виджеты отображаются на каждой странице пользователя.
Эти шаги должны полностью решить вашу задачу по изменению макета страниц пользовательских типов и удалению боковой панели на групповых и членских страницах. Если у вас есть дополнительные вопросы или нужна помощь с другим функционалом, не стесняйтесь спрашивать!