Come rimuovere un'area widget in WordPress senza modificare il codice?
Sto gestendo un'installazione WordPress che ha 2 aree widget. Una sembra rompere la pagina e vorrei rimuoverla.
Ecco lo screenshot della mia configurazione widget
Come posso rimuovere l'Area Widget Principale senza modificare nessun codice? È possibile?
E se non fosse possibile, come posso rimuovere completamente quest'area?
Grazie!!
Ed ecco il file functions.php:
/*
* Imposta il valore della larghezza del contenuto in base al design del tema.
*
* @see twentythirteen_content_width() per aggiustamenti specifici del template.
*/
if ( ! isset( $content_width ) )
$content_width = 604;
/**
* Aggiunge supporto per un'immagine personalizzata nell'header.
*/
require get_template_directory() . '/inc/custom-header.php';
/**
* Twenty Thirteen funziona solo con WordPress 3.6 o successivo.
*/
if ( version_compare( $GLOBALS['wp_version'], '3.6-alpha', '<' ) )
require get_template_directory() . '/inc/back-compat.php';
/**
* Configurazione di Twenty Thirteen.
*
* Imposta le impostazioni predefinite del tema e registra le varie funzionalità di WordPress
* che Twenty Thirteen supporta.
*
* @uses load_theme_textdomain() Per il supporto alla traduzione/localizzazione.
* @uses add_editor_style() Per aggiungere fogli di stile all'Editor Visuale.
* @uses add_theme_support() Per aggiungere supporto ai feed automatici, formati
* dei post e miniature dei post.
* @uses register_nav_menu() Per aggiungere supporto a un menu di navigazione.
* @uses set_post_thumbnail_size() Per impostare una dimensione personalizzata per le miniature.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_setup() {
/*
* Rende Twenty Thirteen disponibile per la traduzione.
*
* Le traduzioni possono essere aggiunte nella directory /languages/.
* Se stai creando un tema basato su Twenty Thirteen, usa cerca e
* sostituisci per cambiare 'twentythirteen' con il nome del tuo tema in tutti
* i file template.
*/
load_theme_textdomain( 'twentythirteen', get_template_directory() . '/languages' );
/*
* Questo tema applica all'editor visuale uno stile simile a quello del tema,
* specificamente font, colori, icone e larghezza delle colonne.
*/
add_editor_style( array( 'css/editor-style.css', 'fonts/genericons.css', twentythirteen_fonts_url() ) );
// Aggiunge link ai feed RSS in <head> per post e commenti.
add_theme_support( 'automatic-feed-links' );
/*
* Cambia il markup predefinito per il form di ricerca, il form dei commenti,
* e i commenti per output HTML5 valido.
*/
add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list' ) );
/*
* Questo tema supporta tutti i formati di post disponibili di default.
* Vedi http://codex.wordpress.org/Post_Formats
*/
add_theme_support( 'post-formats', array(
'aside', 'audio', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video'
) );
// Questo tema usa wp_nav_menu() in una posizione.
register_nav_menu( 'primary', __( 'Menu di Navigazione', 'twentythirteen' ) );
/*
* Questo tema usa una dimensione personalizzata per le immagini in evidenza, mostrate
* nei post e pagine "standard".
*/
add_theme_support( 'post-thumbnails' );
set_post_thumbnail_size( 604, 270, true );
// Questo tema usa i propri stili per le gallerie.
add_filter( 'use_default_gallery_style', '__return_false' );
}
add_action( 'after_setup_theme', 'twentythirteen_setup' );
/**
* Restituisce l'URL del foglio di stile dei font Google, se disponibile.
*
* L'uso di Source Sans Pro e Bitter di default è localizzato. Per lingue
* che usano caratteri non supportati dal font, il font può essere disabilitato.
*
* @since Twenty Thirteen 1.0
*
* @return string URL del foglio di stile o stringa vuota se disabilitato.
*/
function twentythirteen_fonts_url() {
$fonts_url = '';
/* Traduttori: Se ci sono caratteri nella tua lingua che non sono
* supportati da Source Sans Pro, traduci questo in 'off'. Non tradurre
* nella tua lingua.
*/
$source_sans_pro = _x( 'on', 'Font Source Sans Pro: on o off', 'twentythirteen' );
/* Traduttori: Se ci sono caratteri nella tua lingua che non sono
* supportati da Bitter, traduci questo in 'off'. Non tradurre nella tua
* lingua.
*/
$bitter = _x( 'on', 'Font Bitter: on o off', 'twentythirteen' );
if ( 'off' !== $source_sans_pro || 'off' !== $bitter ) {
$font_families = array();
if ( 'off' !== $source_sans_pro )
$font_families[] = 'Source Sans Pro:300,400,700,300italic,400italic,700italic';
if ( 'off' !== $bitter )
$font_families[] = 'Bitter:400,700';
$query_args = array(
'family' => urlencode( implode( '|', $font_families ) ),
'subset' => urlencode( 'latin,latin-ext' ),
);
$fonts_url = add_query_arg( $query_args, "//fonts.googleapis.com/css" );
}
return $fonts_url;
}
/**
* Carica script e stili per il front end.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_scripts_styles() {
/*
* Aggiunge JavaScript alle pagine con il form dei commenti per supportare
* siti con commenti annidati (quando in uso).
*/
if ( is_singular() && comments_open() && get_option( 'thread_comments' ) )
wp_enqueue_script( 'comment-reply' );
// Aggiunge Masonry per gestire l'allineamento verticale dei widget nel footer.
if ( is_active_sidebar( 'sidebar-1' ) )
wp_enqueue_script( 'jquery-masonry' );
// Carica il file JavaScript con funzionalità specifiche per Twenty Thirteen.
wp_enqueue_script( 'twentythirteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '2013-07-18', true );
// Aggiunge i font Source Sans Pro e Bitter, usati nel foglio di stile principale.
wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null );
// Aggiunge il font Genericons, usato nel foglio di stile principale.
wp_enqueue_style( 'genericons', get_template_directory_uri() . '/fonts/genericons.css', array(), '2.09' );
// Carica il nostro foglio di stile principale.
wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' );
// Carica il foglio di stile specifico per Internet Explorer.
wp_enqueue_style( 'twentythirteen-ie', get_template_directory_uri() . '/css/ie.css', array( 'twentythirteen-style' ), '2013-07-18' );
wp_style_add_data( 'twentythirteen-ie', 'conditional', 'lt IE 9' );
}
add_action( 'wp_enqueue_scripts', 'twentythirteen_scripts_styles' );
/**
* Filtra il titolo della pagina.
*
* Crea un elemento titolo formattato in modo pulito e più specifico per l'output
* nell'head del documento, basato sulla vista corrente.
*
* @since Twenty Thirteen 1.0
*
* @param string $title Testo predefinito del titolo per la vista corrente.
* @param string $sep Separatore opzionale.
* @return string Il titolo filtrato.
*/
function twentythirteen_wp_title( $title, $sep ) {
global $paged, $page;
if ( is_feed() )
return $title;
// Aggiunge il nome del sito.
$title .= get_bloginfo( 'name' );
// Aggiunge la descrizione del sito per la home/front page.
$site_description = get_bloginfo( 'description', 'display' );
if ( $site_description && ( is_home() || is_front_page() ) )
$title = "$title $sep $site_description";
// Aggiunge un numero di pagina se necessario.
if ( $paged >= 2 || $page >= 2 )
$title = "$title $sep " . sprintf( __( 'Pagina %s', 'twentythirteen' ), max( $paged, $page ) );
return $title;
}
add_filter( 'wp_title', 'twentythirteen_wp_title', 10, 2 );
/**
* Registra due aree widget.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_widgets_init() {
register_sidebar( array(
'name' => __( 'Area Widget Principale', 'twentythirteen' ),
'id' => 'sidebar-1',
'description' => __( 'Appare nella sezione footer del sito.', 'twentythirteen' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
register_sidebar( array(
'name' => __( 'Area Widget Secondaria', 'twentythirteen' ),
'id' => 'sidebar-2',
'description' => __( 'Appare nei post e nelle pagine nella sidebar.', 'twentythirteen' ),
'before_widget' => '<aside id="%1$s" class="widget %2$s">',
'after_widget' => '</aside>',
'before_title' => '<h3 class="widget-title">',
'after_title' => '</h3>',
) );
}
add_action( 'widgets_init', 'twentythirteen_widgets_init' );
if ( ! function_exists( 'twentythirteen_paging_nav' ) ) :
/**
* Mostra la navigazione ai prossimi/precedenti set di post quando applicabile.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_paging_nav() {
global $wp_query;
// Non stampare markup vuoto se c'è solo una pagina.
if ( $wp_query->max_num_pages < 2 )
return;
?>
<nav class="navigation paging-navigation" role="navigation">
<h1 class="screen-reader-text"><?php _e( 'Navigazione post', 'twentythirteen' ); ?></h1>
<div class="nav-links">
<?php if ( get_next_posts_link() ) : ?>
<div class="nav-previous"><?php next_posts_link( __( '<span class="meta-nav">←</span> Post meno recenti', 'twentythirteen' ) ); ?></div>
<?php endif; ?>
<?php if ( get_previous_posts_link() ) : ?>
<div class="nav-next"><?php previous_posts_link( __( 'Post più recenti <span class="meta-nav">→</span>', 'twentythirteen' ) ); ?></div>
<?php endif; ?>
</div><!-- .nav-links -->
</nav><!-- .navigation -->
<?php
}
endif;
if ( ! function_exists( 'twentythirteen_post_nav' ) ) :
/**
* Mostra la navigazione al prossimo/precedente post quando applicabile.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_post_nav() {
global $post;
// Non stampare markup vuoto se non c'è nessun posto dove navigare.
$previous = ( is_attachment() ) ? get_post( $post->post_parent ) : get_adjacent_post( false, '', true );
$next = get_adjacent_post( false, '', false );
if ( ! $next && ! $previous )
return;
?>
<nav class="navigation post-navigation" role="navigation">
<h1 class="screen-reader-text"><?php _e( 'Navigazione post', 'twentythirteen' ); ?></h1>
<div class="nav-links">
<?php previous_post_link( '%link', _x( '<span class="meta-nav">←</span> %title', 'Link post precedente', 'twentythirteen' ) ); ?>
<?php next_post_link( '%link', _x( '%title <span class="meta-nav">→</span>', 'Link post successivo', 'twentythirteen' ) ); ?>
</div><!-- .nav-links -->
</nav><!-- .navigation -->
<?php
}
endif;
if ( ! function_exists( 'twentythirteen_entry_meta' ) ) :
/**
* Stampa HTML con meta informazioni per il post corrente: categorie, tag, permalink, autore e data.
*
* Crea la tua twentythirteen_entry_meta() per sovrascriverla in un child theme.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_entry_meta() {
if ( is_sticky() && is_home() && ! is_paged() )
echo '<span class="featured-post">' . __( 'In evidenza', 'twentythirteen' ) . '</span>';
if ( ! has_post_format( 'link' ) && 'post' == get_post_type() )
twentythirteen_entry_date();
// Traduttori: usato tra gli elementi della lista, c'è uno spazio dopo la virgola.
$categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) );
if ( $categories_list ) {
echo '<span class="categories-links">' . $categories_list . '</span>';
}
// Traduttori: usato tra gli elementi della lista, c'è uno spazio dopo la virgola.
$tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) );
if ( $tag_list ) {
echo '<span class="tags-links">' . $tag_list . '</span>';
}
// Autore del post
if ( 'post' == get_post_type() ) {
printf( '<span class="author vcard"><a class="url fn n" href="%1$s" title="%2$s" rel="author">%3$s</a></span>',
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
esc_attr( sprintf( __( 'Visualizza tutti i post di %s', 'twentythirteen' ), get_the_author() ) ),
get_the_author()
);
}
}
endif;
if ( ! function_exists( 'twentythirteen_entry_date' ) ) :
/**
* Stampa HTML con informazioni sulla data per il post corrente.
*
* Crea la tua twentythirteen_entry_date() per sovrascriverla in un child theme.
*
* @since Twenty Thirteen 1.0
*
* @param boolean $echo (opzionale) Se stampare la data. Default true.
* @return string La data del post formattata in HTML.
*/
function twentythirteen_entry_date( $echo = true ) {
if ( has_post_format( array( 'chat', 'status' ) ) )
$format_prefix = _x( '%1$s su %2$s', '1: nome formato post. 2: data', 'twentythirteen' );
else
$format_prefix = '%2$s';
$date = sprintf( '<span class="date"><a href="%1$s" title="%2$s" rel="bookmark"><time class="entry-date" datetime="%3$s">%4$s</time></a></span>',
esc_url( get_permalink() ),
esc_attr( sprintf( __( 'Permalink a %s', 'twentythirteen' ), the_title_attribute( 'echo=0' ) ) ),
esc_attr( get_the_date( 'c' ) ),
esc_html( sprintf( $format_prefix, get_post_format_string( get_post_format() ), get_the_date() ) )
);
if ( $echo )
echo $date;
return $date;
}
endif;
if ( ! function_exists( 'twentythirteen_the_attached_image' ) ) :
/**
* Stampa l'immagine allegata con un link alla prossima immagine allegata.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_the_attached_image() {
/**
* Filtra la dimensione dell'immagine allegata da usare.
*
* @since Twenty thirteen 1.0
*
* @param array $size {
* @type int L'altezza dell'allegato in pixel.
* @type int La larghezza dell'allegato in pixel.
* }
*/
$attachment_size = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) );
$next_attachment_url = wp_get_attachment_url();
$post = get_post();
/*
* Recupera gli ID di tutte le immagini allegate in una galleria così possiamo ottenere l'URL
* della prossima immagine adiacente in una galleria, o la prima immagine (se stiamo
* guardando l'ultima immagine in una galleria), o, in una galleria di una sola immagine, solo il
* link a quel file immagine.
*/
$attachment_ids = get_posts( array(
'post_parent' => $post->post_parent,
'fields' => 'ids',
'numberposts' => -1,
'post_status' => 'inherit',
'post_type' => 'attachment',
'post_mime_type' => 'image',
'order' => 'ASC',
'orderby' => 'menu_order ID'
) );
// Se c'è più di 1 allegato in una galleria...
if ( count( $attachment_ids ) > 1 ) {
foreach ( $attachment_ids as $attachment_id ) {
if ( $attachment_id == $post->ID ) {
$next_id = current( $attachment_ids );
break;
}
}
// ottieni l'URL della prossima immagine allegata...
if ( $next_id )
$next_attachment_url = get_attachment_link( $next_id );
// o ottieni l'URL della prima immagine allegata.
else
$next_attachment_url = get_attachment_link( array_shift( $attachment_ids ) );
}
printf( '<a href="%1$s" title="%2$s" rel="attachment">%3$s</a>',
esc_url( $next_attachment_url ),
the_title_attribute( array( 'echo' => false ) ),
wp_get_attachment_image( $post->ID, $attachment_size )
);
}
endif;
/**
* Restituisce l'URL del post.
*
* @uses get_url_in_content() per ottenere l'URL nei meta del post (se esiste) o
* il primo link trovato nel contenuto del post.
*
* Ripiega sul permalink del post se nessun URL è trovato nel post.
*
* @since Twenty Thirteen 1.0
*
* @return string L'URL del formato Link.
*/
function twentythirteen_get_link_url() {
$content = get_the_content();
$has_url = get_url_in_content( $content );
return ( $has_url ) ? $has_url : apply_filters( 'the_permalink', get_permalink() );
}
/**
* Estende le classi del corpo predefinite di WordPress.
*
* Aggiunge classi al corpo per denotare:
* 1. Autori singoli o multipli.
* 2. Widget attivi nella sidebar per cambiare layout e spaziatura.
* 3. Quando gli avatar sono disabilitati nelle impostazioni di discussione.
*
* @since Twenty Thirteen 1.0
*
* @param array $classes Una lista di valori esistenti delle classi del corpo.
* @return array La lista filtrata delle classi del corpo.
*/
function twentythirteen_body_class( $classes ) {
if ( ! is_multi_author() )
$classes[] = 'single-author';
if ( is_active_sidebar( 'sidebar-2' ) && ! is_attachment() && ! is_404() )
$classes[] = 'sidebar';
if ( ! get_option( 'show_avatars' ) )
$classes[] = 'no-avatars';
return $classes;
}
add_filter( 'body_class', 'twentythirteen_body_class' );
/**
* Aggiusta il valore content_width per i formati di post video e i template degli allegati.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_content_width() {
global $content_width;
if ( is_attachment() )
$content_width = 724;
elseif ( has_post_format( 'audio' ) )
$content_width = 484;
}
add_action( 'template_redirect', 'twentythirteen_content_width' );
/**
* Aggiunge supporto postMessage per titolo e descrizione del sito nel Customizer.
*
* @since Twenty Thirteen 1.0
*
* @param WP_Customize_Manager $wp_customize Oggetto Customizer.
* @return void
*/
function twentythirteen_customize_register( $wp_customize ) {
$wp_customize->get_setting( 'blogname' )->transport = 'postMessage';
$wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage';
$wp_customize->get_setting( 'header_textcolor' )->transport = 'postMessage';
}
add_action( 'customize_register', 'twentythirteen_customize_register' );
/**
* Carica gestori JavaScript postMessage per il Customizer.
*
* Associa gestori JavaScript per fare in modo che l'anteprima del Customizer
* ricarichi i cambiamenti in modo asincrono.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_customize_preview_js() {
wp_enqueue_script( 'twentythirteen-customizer', get_template_directory_uri() . '/js/theme-customizer.js', array( 'customize-preview' ), '20130226', true );
}
add_action( 'customize_preview_init', 'twentythirteen_customize_preview_js' );

No, non è possibile, non nel 99% dei casi.
Le aree widget vengono aggiunte con una chiamata register_sidebar
in un file php. Fino a quando WordPress non legge quella riga, l'area widget non viene registrata.
Quindi, il modo più semplice e sempre disponibile per evitare che un'area widget venga registrata è rimuovere (o almeno commentare) quella riga.
Se l'area widget è registrata all'interno di una funzione del tema e questa funzione è racchiusa in un if ( ! function_exists )
, ad esempio:
if ( ! function_exists('register_theme_stuff') ) {
function register_theme_stuff() {
register_sidebar( ... );
register_post_type( ... );
register_taxonomy( ... );
}
}
allora puoi creare un child theme e sostituire la funzione senza registrare l'area widget, ma questo significa scrivere codice, giusto?
Un altro modo per evitare che le aree widget vengano registrate è quando lo sviluppatore ha utilizzato una callback e un hook appropriato, ad esempio:
add_action( 'widget_init', 'my_register_widgets' );
in questo caso puoi usare remove_action
per rimuoverla e impedire la registrazione del widget:
remove_action( 'widget_init', 'my_register_widgets' );
Per essere sicuro che l'azione venga rimossa, chiama remove_action
dopo che l'azione è stata aggiunta. Se l'add_action
è all'interno di functions.php
senza essere racchiuso in alcun hook, allora usa remove_action
all'interno di una callback dell'azione after_setup_theme
. Leggi qui su add_action
e remove_action
.
Un'altra possibilità è che lo sviluppatore registri la sidebar senza utilizzare un hook appropriato, semplicemente chiamando register_sidebar
in functions.php
in modo diretto:
// functions.php
register_sidebar( array( 'id' => 'a-sidebar-id', ... ) );
In questo caso puoi rimuoverla usando unregister_sidebar
subito dopo la registrazione della sidebar, 'after_setup_theme'
, che viene eseguito dopo l'inclusione di functions.php, sarà perfetto per lo scopo:
add_action( 'after_setup_theme', function() {
unregister_sidebar( 'a-sidebar-id' );
});
L'1% dei casi in cui le aree widget possono essere disabilitate senza usare codice è quando lo sviluppatore del tema/plugin ha aggiunto un'opzione per registrare la sidebar.
Esempio:
function register_theme_stuff() {
if ( get_option('use_sidebar') ) register_sidebar( ... );
if ( get_option('use_cpt') ) register_post_type( ... );
if ( get_option('use_custom_tax') ) register_taxonomy( ... );
}
Se il codice è così, probabilmente c'è qualche interfaccia di impostazione che ti permette di disabilitare le aree widget, ma se lo sviluppatore non ha fornito quell'opzione per consentire/bloccare la registrazione della sidebar, l'unica soluzione è modificare il codice.
PS non prendere sul serio le statistiche 99% / 1%...

Se fatto correttamente (tramite callback, agganciato a un'azione appropriata, come widgets_init
), allora è assolutamente possibile deregistrare le aree widget. Questo è parte del motivo per cui abbiamo bisogno di vedere il codice.

Grazie, ma come posso navigare/trovare quel file dove devo modificare il codice?

Puoi usare FTP. I temi si trovano in /wp-content/themes
. Dovresti iniziare con il file functions.php
del Tema.

@ChipBennett grazie! cosa ne pensi di modificare il php direttamente all'interno del CMS WordPress? Non ho accesso per scaricare questa particolare installazione di WordPress. È una pratica accettabile modificare il php direttamente in WordPress? Il sito è online ma non ha visitatori, quindi nessuno vedrà eventuali problemi temporanei.

Personalmente penso che l'editor di file nell'area admin sia la peggiore "funzionalità" in tutto WordPress, e non dovrebbe mai essere utilizzato da chi non è a suo agio nel ripristinare errori fatali che possono, e quasi sicuramente accadranno, usando un editor così scadente.

@ChipBennett sì, è quello che ho sentito. Perché è così scadente? Io sono a mio agio con l'editing del php. Ovviamente, preferirei non farlo. Ma c'è qualcosa di effettivamente sbagliato in quell'editor? È pieno di bug?

Sì, è possibile deregistrare un'area widget.
Le aree widget, conosciute anche come Sidebar Dinamiche, vengono registrate tramite register_sidebar()
, che avrà un aspetto simile a questo:
register_sidebar( array(
'name' => __( 'Nome Sidebar', 'theme_text_domain' ),
'id' => 'unique-sidebar-id',
'description' => '',
'class' => '',
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>'
) );
Ora, se questa funzione è implementata correttamente nel tema, la troveremo all'interno di una callback, agganciata a un'azione appropriata, normalmente widgets_init
:
function wpse140550_register_sidebars() {
register_sidebar( array(
'name' => __( 'Nome Sidebar', 'theme_text_domain' ),
'id' => 'unique-sidebar-id',
'description' => '',
'class' => '',
'before_widget' => '<li id="%1$s" class="widget %2$s">',
'after_widget' => '</li>',
'before_title' => '<h2 class="widgettitle">',
'after_title' => '</h2>'
) );
}
add_action( 'widgets_init', 'wpse140550_register_sidebars' );
Quindi, se conosci l''id'
della Sidebar Dinamica, puoi deregistrarla usando la funzione complementare: unregister_sidebar()
:
unregister_sidebar( 'unique-sidebar-id' );
Ma questa funzione deve essere chiamata alla stessa azione in cui è agganciata la chiamata register_sidebar()
.
Nel nostro esempio fatto correttamente, sappiamo che l'azione è widgets_init
:
function wpse140550_deregister_sidebar() {
unregister_sidebar( 'unique-sidebar-id' );
}
add_action( 'widgets_init', 'wpse140550_deregister_sidebar' );
Ora, questo dovrebbe funzionare correttamente, anche se il Tema non è agganciato a un'azione esplicita. Il file functions.php
del Tema viene eseguito (se ricordo bene) a plugins_loaded
, che avviene prima di widgets_init
, e widgets_init
è dove avvengono effettivamente le funzioni dei Widget.
Quindi, puoi utilizzare un Child Theme o un Plugin di funzionalità del sito per rimuovere la Sidebar Dinamica. Principalmente hai bisogno di conoscerne l''id'
per poterlo fare.

Grazie per una risposta così dettagliata. Naturalmente ho altre domande :) Come posso individuare l'ID del widget?

E c'è un plugin per la funzionalità del sito che consiglieresti e che sia valido? Grazie ancora!

"Come posso individuare l'ID del widget?" - è per questo che continuo a chiedere il codice utilizzato per registrare la sidebar.

"E c'è un plugin di funzionalità del sito che consiglieresti che sia buono?" - un plugin di funzionalità del sito è creato dall'utente, per memorizzare funzioni specifiche del sito e frammenti di codice. Quindi, no: non c'è nulla da raccomandare.

Non esattamente. Il tuo codice potrebbe non funzionare. È tutta una questione di priorità: per unregister_sidebar
la sidebar deve essere prima registrata. Se sia la registrazione che la deregistrazione avvengono sullo stesso hook e con la stessa priorità (come nel tuo codice), è un tiro al buio. Per essere sicuri che funzioni, devi deregistrare con una priorità inferiore rispetto alla registrazione. Nell'esempio fatto correttamente, rimuovere l'azione prima che accada (subito dopo che è stata aggiunta) è decisamente più affidabile. PS: per precisione, functions.php
è incluso senza alcun hook, tra 'setup_theme' (subito dopo 'plugins_loaded') e 'after_setup_theme'.

@ChipBennett ho appena aggiunto il mio codice functions.php nella domanda originale. era questo che chiedevi?

Sì
Almeno io sono riuscito a farlo sul mio sito che è ospitato direttamente su wordpress.com
Istruzioni:
Rimuovi tutti i widget posizionati in quell'area specifica e si comprimerà e nasconderà automaticamente.
Fatto.
Nota: Questa risposta non è per l'OP, ma per altre persone che arrivano qui come è successo a me.
