Задача: удалить виджеты из подвала записей сайта на WP, оставив их на главной и других страницах.
Теория: сайдбар (sidebar) — это область на сайте, в которой размещён один или несколько виджетов. Обычно, настраивается через «Внешний вид»-> «Виджеты»
Решение: очевидный вариант: «удалить сайдбар из шаблона записи», мне не подходил. Нужный сайдбар являлся частью подвала сайта и втыкался в footer.php темы.
Значит, нужно найти id сайдбара. Пошарив с часок по сети, не нашёл простого решения.
Тогда, я тупо залез в код страницы админки «Внешний вид»-> «Виджеты» (на сайте стоит тема «Hestia»)
Получилось что-то вроде этого (надеюсь, ты понимаешь, что конкретный код от темы сайта зависит?):
<div id="footer-one-widgets" class="widgets-sortables ui-droppable ui-sortable">
<div class="sidebar-name" data-add-to="Добавить на: Подвал Один">
<button type="button" class="handlediv hide-if-no-js" aria-expanded="false">
<span class="screen-reader-text">Подвал Один</span>
<span class="toggle-indicator" aria-hidden="true"></span>
</button>
<h2>Подвал Один <span class="spinner"></span></h2>
</div>
и, в выделенном <div>-е я нахожу то, что искал!
id виджета я нахожу тем же способом, но смотрю уже код фронтенда сайта.
Теперь, остаётся только отключить нужные виджеты в этих сайдбарах (в functions.php):
add_filter( 'sidebars_widgets', 'disable_widget' );
function disable_widget( $sidebars_widgets ) {
if ( is_single() && is_array($sidebars_widgets['footer-one-widgets']) ) {
foreach($sidebars_widgets['footer-one-widgets'] as $i => $widget) {
if(strpos($widget, 'archives-5') !== false) {
unset($sidebars_widgets['footer-one-widgets'][$i]);
}
}
}
if ( is_single() && is_array($sidebars_widgets['footer-two-widgets']) ) {
foreach($sidebars_widgets['footer-two-widgets'] as $i => $widget) {
if(strpos($widget, 'categories-6') !== false) {
unset($sidebars_widgets['footer-two-widgets'][$i]);
}
}
}
return $sidebars_widgets;
}
Вот такое юзерское, но вполне себе, рабочее, решение.