Come rimuovere un'area widget in WordPress senza modificare il codice?

7 apr 2014, 19:46:51
Visualizzazioni: 19.7K
Voti: 1

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

Configurazione widget in WordPress

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">&larr;</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">&rarr;</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">&larr;</span> %title', 'Link post precedente', 'twentythirteen' ) ); ?>
            <?php next_post_link( '%link', _x( '%title <span class="meta-nav">&rarr;</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' );
8
Commenti

Per favore modifica la tua domanda per includere il codice che aggiunge l'area Widget che desideri rimuovere.

Chip Bennett Chip Bennett
7 apr 2014 19:49:47

@ChipBennett in realtà non l'ho mai aggiunta tramite codice. È stata inserita da qualcun altro. L'unico modo per aggiungere/rimuovere aree widget è farlo tramite codice?

Genadinik Genadinik
7 apr 2014 19:52:47

Sfortunatamente è l'unico modo per aggiungere/rimuovere aree widget. Come nota a margine, dovresti davvero mantenere aggiornati i tuoi plugin per questioni di sicurezza.

Howdy_McGee Howdy_McGee
7 apr 2014 19:54:01

@ChipBennett ho capito riguardo alle aree widget. Qual è il modo migliore per modificarle? Direttamente dentro WordPress? Come posso accedervi?

Genadinik Genadinik
7 apr 2014 19:56:06

L'area Widget è registrata dal Tema (molto probabilmente - è possibile, ma non probabile che un Plugin registri un'area Widget). Il codice per registrarla sarà nel tuo Tema - probabilmente nel file functions.php. Per sapere come deregistrare l'area Widget, prima dobbiamo sapere come è stata registrata.

Chip Bennett Chip Bennett
7 apr 2014 20:07:28

@ChipBennett grazie Chip, quindi come posso effettivamente accedere per modificare il file functions.php? :)

Genadinik Genadinik
7 apr 2014 20:11:40

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

Chip Bennett Chip Bennett
7 apr 2014 20:12:33

Non hai ancora spiegato esattamente come rompe la tua pagina, rimuovere la sidebar potrebbe non essere la soluzione di cui hai bisogno, e qualsiasi risposta che diamo è un tiro al buio. Potrebbe essere un problema puramente di CSS. Fornisci maggiori informazioni sul tuo problema effettivo, altrimenti stiamo solo speculando che sia un problema della sidebar. Inoltre, quali modifiche sono state apportate al tema 2013 che stai utilizzando?

Tom J Nowell Tom J Nowell
7 apr 2014 20:55:06
Mostra i restanti 3 commenti
Tutte le risposte alla domanda 3
7

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%...

7 apr 2014 20:03:20
Commenti

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.

Chip Bennett Chip Bennett
7 apr 2014 20:06:08

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

Genadinik Genadinik
7 apr 2014 20:07:38

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

Chip Bennett Chip Bennett
7 apr 2014 20:11:10

@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.

Genadinik Genadinik
7 apr 2014 20:13:34

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.

Chip Bennett Chip Bennett
7 apr 2014 20:14:47

@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?

Genadinik Genadinik
7 apr 2014 20:16:30

Provatelo e capirete rapidamente perché.

Chip Bennett Chip Bennett
7 apr 2014 20:24:44
Mostra i restanti 2 commenti
7

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.

7 apr 2014 20:23:14
Commenti

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

Genadinik Genadinik
7 apr 2014 20:27:17

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

Genadinik Genadinik
7 apr 2014 20:29:28

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

Chip Bennett Chip Bennett
7 apr 2014 20:30:15

"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.

Chip Bennett Chip Bennett
7 apr 2014 20:31:11

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'.

gmazzap gmazzap
7 apr 2014 20:40:06

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

Genadinik Genadinik
7 apr 2014 20:49:36

Stai cercando una chiamata register_sidebar(), all'interno di un callback, agganciato a widgets_init. Riesci a trovare questo tipo di codice nel tuo file functions.php?

Chip Bennett Chip Bennett
7 apr 2014 20:51:19
Mostra i restanti 2 commenti
0


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.

5 dic 2018 07:56:24