¿Puedo eliminar un área de widgets sin editar código?

7 abr 2014, 19:46:51
Vistas: 19.7K
Votos: 1

Estoy trabajando con una configuración de Wordpress que tiene 2 áreas de widgets. Una parece estar rompiendo la página, y quiero eliminarla.

Aquí está la captura de pantalla de mi configuración de widgets

Captura de pantalla de la configuración de widgets de WordPress

¿Cómo puedo eliminar el Área de Widgets Principal sin editar ningún código? ¿Es posible?

Y si no es posible, ¿cómo puedo eliminar esta área en general?

¡¡Gracias!!

Y aquí está el archivo functions.php:

/*
 * Establecer el valor del ancho del contenido basado en el diseño del tema.
 *
 * @see twentythirteen_content_width() para ajustes específicos de la plantilla.
 */
if ( ! isset( $content_width ) )
    $content_width = 604;

/**
 * Agregar soporte para una imagen de encabezado personalizada.
 */
require get_template_directory() . '/inc/custom-header.php';

/**
 * Twenty Thirteen solo funciona en WordPress 3.6 o posterior.
 */
if ( version_compare( $GLOBALS['wp_version'], '3.6-alpha', '<' ) )
    require get_template_directory() . '/inc/back-compat.php';

/**
 * Configuración de Twenty Thirteen.
 *
 * Establece los valores predeterminados del tema y registra las diversas
 * características de WordPress que Twenty Thirteen soporta.
 *
 * @uses load_theme_textdomain() Para soporte de traducción/localización.
 * @uses add_editor_style() Para agregar hojas de estilo al Editor Visual.
 * @uses add_theme_support() Para agregar soporte para enlaces automáticos de feed,
 * formatos de post y miniaturas de post.
 * @uses register_nav_menu() Para agregar soporte para un menú de navegación.
 * @uses set_post_thumbnail_size() Para establecer un tamaño personalizado para la miniatura del post.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_setup() {
    /*
     * Hace que Twenty Thirteen esté disponible para traducción.
     *
     * Las traducciones se pueden agregar al directorio /languages/.
     * Si estás construyendo un tema basado en Twenty Thirteen, usa find y
     * replace para cambiar 'twentythirteen' por el nombre de tu tema en todos los
     * archivos de plantilla.
     */
    load_theme_textdomain( 'twentythirteen', get_template_directory() . '/languages' );

    /*
     * Este tema estiliza el editor visual para que se parezca al estilo del tema,
     * específicamente fuente, colores, iconos y ancho de columna.
     */
    add_editor_style( array( 'css/editor-style.css', 'fonts/genericons.css', twentythirteen_fonts_url() ) );

    // Agrega enlaces de feed RSS a <head> para posts y comentarios.
    add_theme_support( 'automatic-feed-links' );

    /*
     * Cambia el marcado principal predeterminado para el formulario de búsqueda, formulario de comentarios,
     * y comentarios para generar HTML5 válido.
     */
    add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list' ) );

    /*
     * Este tema soporta todos los formatos de post disponibles por defecto.
     * Ver http://codex.wordpress.org/Post_Formats
     */
    add_theme_support( 'post-formats', array(
        'aside', 'audio', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video'
    ) );

    // Este tema usa wp_nav_menu() en una ubicación.
    register_nav_menu( 'primary', __( 'Navigation Menu', 'twentythirteen' ) );

    /*
     * Este tema usa un tamaño de imagen personalizado para imágenes destacadas, mostradas en
     * posts y páginas "estándar".
     */
    add_theme_support( 'post-thumbnails' );
    set_post_thumbnail_size( 604, 270, true );

    // Este tema usa sus propios estilos de galería.
    add_filter( 'use_default_gallery_style', '__return_false' );
}
add_action( 'after_setup_theme', 'twentythirteen_setup' );

/**
 * Devuelve la URL de la hoja de estilo de Google font, si está disponible.
 *
 * El uso de Source Sans Pro y Bitter por defecto está localizado. Para idiomas
 * que usan caracteres no soportados por la fuente, la fuente puede desactivarse.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return string Hoja de estilo de fuente o cadena vacía si está desactivada.
 */
function twentythirteen_fonts_url() {
    $fonts_url = '';

    /* Traductores: Si hay caracteres en tu idioma que no son
     * soportados por Source Sans Pro, traduce esto a 'off'. No traduzcas
     * a tu propio idioma.
     */
    $source_sans_pro = _x( 'on', 'Source Sans Pro font: on or off', 'twentythirteen' );

    /* Traductores: Si hay caracteres en tu idioma que no son
     * soportados por Bitter, traduce esto a 'off'. No traduzcas a tu
     * propio idioma.
     */
    $bitter = _x( 'on', 'Bitter font: on or 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;
}

/**
 * Registra scripts y estilos para el front end.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_scripts_styles() {
    /*
     * Agrega JavaScript a páginas con el formulario de comentarios para admitir
     * sitios con comentarios anidados (cuando están en uso).
     */
    if ( is_singular() && comments_open() && get_option( 'thread_comments' ) )
        wp_enqueue_script( 'comment-reply' );

    // Agrega Masonry para manejar la alineación vertical de los widgets del pie de página.
    if ( is_active_sidebar( 'sidebar-1' ) )
        wp_enqueue_script( 'jquery-masonry' );

    // Carga archivo JavaScript con funcionalidad específica para Twenty Thirteen.
    wp_enqueue_script( 'twentythirteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '2013-07-18', true );

    // Agrega fuentes Source Sans Pro y Bitter, utilizadas en la hoja de estilo principal.
    wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null );

    // Agrega fuente Genericons, utilizada en la hoja de estilo principal.
    wp_enqueue_style( 'genericons', get_template_directory_uri() . '/fonts/genericons.css', array(), '2.09' );

    // Carga nuestra hoja de estilo principal.
    wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' );

    // Carga la hoja de estilo específica para 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 el título de la página.
 *
 * Crea un texto de elemento de título con formato agradable y más específico para la salida
 * en la cabecera del documento, basado en la vista actual.
 *
 * @since Twenty Thirteen 1.0
 *
 * @param string $title Texto del título predeterminado para la vista actual.
 * @param string $sep   Separador opcional.
 * @return string El título filtrado.
 */
function twentythirteen_wp_title( $title, $sep ) {
    global $paged, $page;

    if ( is_feed() )
        return $title;

    // Agrega el nombre del sitio.
    $title .= get_bloginfo( 'name' );

    // Agrega la descripción del sitio para la página de inicio/portada.
    $site_description = get_bloginfo( 'description', 'display' );
    if ( $site_description && ( is_home() || is_front_page() ) )
        $title = "$title $sep $site_description";

    // Agrega un número de página si es necesario.
    if ( $paged >= 2 || $page >= 2 )
        $title = "$title $sep " . sprintf( __( 'Page %s', 'twentythirteen' ), max( $paged, $page ) );

    return $title;
}
add_filter( 'wp_title', 'twentythirteen_wp_title', 10, 2 );

/**
 * Registra dos áreas de widgets.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_widgets_init() {
    register_sidebar( array(
        'name'          => __( 'Main Widget Area', 'twentythirteen' ),
        'id'            => 'sidebar-1',
        'description'   => __( 'Appears in the footer section of the site.', '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'          => __( 'Secondary Widget Area', 'twentythirteen' ),
        'id'            => 'sidebar-2',
        'description'   => __( 'Appears on posts and pages in the 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' ) ) :
/**
 * Muestra navegación al siguiente/anterior conjunto de posts cuando corresponde.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_paging_nav() {
    global $wp_query;

    // No imprime marcado vacío si solo hay una página.
    if ( $wp_query->max_num_pages < 2 )
        return;
    ?>
    <nav class="navigation paging-navigation" role="navigation">
        <h1 class="screen-reader-text"><?php _e( 'Posts navigation', '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> Older posts', 'twentythirteen' ) ); ?></div>
            <?php endif; ?>

            <?php if ( get_previous_posts_link() ) : ?>
            <div class="nav-next"><?php previous_posts_link( __( 'Newer posts <span class="meta-nav">&rarr;</span>', 'twentythirteen' ) ); ?></div>
            <?php endif; ?>

        </div><!-- .nav-links -->
    </nav><!-- .navigation -->
    <?php
}
endif;

if ( ! function_exists( 'twentythirteen_post_nav' ) ) :
/**
 * Muestra navegación al siguiente/anterior post cuando corresponde.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_post_nav() {
    global $post;

    // No imprime marcado vacío si no hay a dónde navegar.
    $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( 'Post navigation', 'twentythirteen' ); ?></h1>
        <div class="nav-links">

            <?php previous_post_link( '%link', _x( '<span class="meta-nav">&larr;</span> %title', 'Previous post link', 'twentythirteen' ) ); ?>
            <?php next_post_link( '%link', _x( '%title <span class="meta-nav">&rarr;</span>', 'Next post link', 'twentythirteen' ) ); ?>

        </div><!-- .nav-links -->
    </nav><!-- .navigation -->
    <?php
}
endif;

if ( ! function_exists( 'twentythirteen_entry_meta' ) ) :
/**
 * Imprime HTML con información meta para el post actual: categorías, etiquetas, enlace permanente, autor y fecha.
 *
 * Crea tu propio twentythirteen_entry_meta() para anular en un tema hijo.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_entry_meta() {
    if ( is_sticky() && is_home() && ! is_paged() )
        echo '<span class="featured-post">' . __( 'Sticky', 'twentythirteen' ) . '</span>';

    if ( ! has_post_format( 'link' ) && 'post' == get_post_type() )
        twentythirteen_entry_date();

    // Traductores: usado entre elementos de lista, hay un espacio después de la coma.
    $categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) );
    if ( $categories_list ) {
        echo '<span class="categories-links">' . $categories_list . '</span>';
    }

    // Traductores: usado entre elementos de lista, hay un espacio después de la coma.
    $tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) );
    if ( $tag_list ) {
        echo '<span class="tags-links">' . $tag_list . '</span>';
    }

    // Autor 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( __( 'View all posts by %s', 'twentythirteen' ), get_the_author() ) ),
            get_the_author()
        );
    }
}
endif;

if ( ! function_exists( 'twentythirteen_entry_date' ) ) :
/**
 * Imprime HTML con información de fecha para el post actual.
 *
 * Crea tu propio twentythirteen_entry_date() para anular en un tema hijo.
 *
 * @since Twenty Thirteen 1.0
 *
 * @param boolean $echo (opcional) Si se debe imprimir la fecha. Por defecto es true.
 * @return string El HTML formateado de la fecha del post.
 */
function twentythirteen_entry_date( $echo = true ) {
    if ( has_post_format( array( 'chat', 'status' ) ) )
        $format_prefix = _x( '%1$s on %2$s', '1: post format name. 2: date', '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 to %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' ) ) :
/**
 * Imprime la imagen adjunta con un enlace a la siguiente imagen adjunta.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_the_attached_image() {
    /**
     * Filtra el tamaño de la imagen adjunta a usar.
     *
     * @since Twenty thirteen 1.0
     *
     * @param array $size {
     *     @type int La altura del adjunto en píxeles.
     *     @type int El ancho del adjunto en píxeles.
     * }
     */
    $attachment_size     = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) );
    $next_attachment_url = wp_get_attachment_url();
    $post                = get_post();

    /*
     * Obtiene los IDs de todos los adjuntos de imagen en una galería para que podamos obtener la URL
     * de la siguiente imagen adyacente en una galería, o la primera imagen (si estamos
     * viendo la última imagen en una galería), o, en una galería de una imagen, solo el
     * enlace a ese archivo de imagen.
     */
    $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'
    ) );

    // Si hay más de 1 adjunto en una galería...
    if ( count( $attachment_ids ) > 1 ) {
        foreach ( $attachment_ids as $attachment_id ) {
            if ( $attachment_id == $post->ID ) {
                $next_id = current( $attachment_ids );
                break;
            }
        }

        // obtiene la URL del siguiente adjunto de imagen...
        if ( $next_id )
            $next_attachment_url = get_attachment_link( $next_id );

        // o obtiene la URL del primer adjunto de imagen.
        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;

/**
 * Devuelve la URL del post.
 *
 * @uses get_url_in_content() para obtener la URL en la meta del post (si existe) o
 * el primer enlace encontrado en el contenido del post.
 *
 * Recurre al enlace permanente del post si no se encuentra URL en el post.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return string La URL de formato de enlace.
 */
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() );
}

/**
 * Extiende las clases de cuerpo predeterminadas de WordPress.
 *
 * Agrega clases de cuerpo para denotar:
 * 1. Autor único o múltiple.
 * 2. Widgets activos en la barra lateral para cambiar el diseño y el espaciado.
 * 3. Cuando los avatares están deshabilitados en la configuración de discusión.
 *
 * @since Twenty Thirteen 1.0
 *
 * @param array $classes Una lista de valores de clase de cuerpo existentes.
 * @return array La lista de clases de cuerpo filtrada.
 */
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' );

/**
 * Ajusta el valor content_width para formatos de post de video y plantillas de adjuntos.
 *
 * @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' );

/**
 * Agrega soporte postMessage para el título y la descripción del sitio en el Personalizador.
 *
 * @since Twenty Thirteen 1.0
 *
 * @param WP_Customize_Manager $wp_customize Objeto del Personalizador.
 * @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' );

/**
 * Registra manejadores de postMessage Javascript para el Personalizador.
 *
 * Vincula manejadores JavaScript para hacer que la vista previa del Personalizador
 * recargue los cambios de forma asíncrona.
 *
 * @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
Comentarios

Por favor edita tu pregunta para incluir el código que añade el área de Widget que quieres eliminar.

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

@ChipBennett en realidad nunca lo añadí mediante código. Alguien más lo puso ahí. ¿La única forma de añadir/eliminar áreas de widgets es hacerlo mediante código?

Genadinik Genadinik
7 abr 2014 19:52:47

Desafortunadamente esa es la única forma de añadir/eliminar áreas de widgets. Como nota adicional, realmente deberías mantener tus plugins actualizados por motivos de seguridad.

Howdy_McGee Howdy_McGee
7 abr 2014 19:54:01

@ChipBennett entendido lo de las áreas de widgets. ¿Cuál es la mejor manera de editarlas? ¿Directamente dentro de WordPress? ¿Cómo navego hasta allí?

Genadinik Genadinik
7 abr 2014 19:56:06

El área de Widgets es registrada por el Tema (lo más probable - es posible, pero no probable que un Plugin registre un área de Widgets). El código para registrarlo estará en tu Tema - probablemente en el archivo functions.php. Para saber cómo desregistrar el área de Widgets, primero necesitamos saber cómo está registrada.

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

@ChipBennett gracias Chip, entonces ¿cómo navego realmente para editar el archivo functions.php? :)

Genadinik Genadinik
7 abr 2014 20:11:40

Puedes usar FTP. Los temas se encuentran en /wp-content/themes. Deberías comenzar con el archivo functions.php del Tema.

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

Todavía no has explicado exactamente cómo afecta a tu página, eliminar la barra lateral podría no ser la solución que necesitas en absoluto, y cualquier respuesta que demos sería un tiro al aire. Podría ser simplemente un problema de CSS. Por favor proporciona más información sobre tu problema real, de lo contrario solo estamos especulando que es un problema de la barra lateral. Además, ¿qué cambios se hicieron al tema 2013 que estás usando?

Tom J Nowell Tom J Nowell
7 abr 2014 20:55:06
Mostrar los 3 comentarios restantes
Todas las respuestas a la pregunta 3
7

No, no es posible, al menos no en el 99% de los casos.

Las áreas de widgets se añaden con una llamada a register_sidebar en un archivo PHP. Hasta que WordPress no lee esa línea, el área de widgets no se registra.

Por lo tanto, la forma más sencilla y siempre disponible para evitar que un área de widgets se registre es eliminar (o al menos comentar) esa línea.

Si el área de widgets se registra dentro de una función del tema, y esta función está envuelta en un bloque if ( ! function_exists ), por ejemplo:

if ( ! function_exists('register_theme_stuff') ) {

  function register_theme_stuff() {
    register_sidebar( ... );
    register_post_type( ... );
    register_taxonomy( ... );
  }

}

entonces puedes crear un tema hijo y reemplazar la función para no registrar el área de widgets, pero eso implica escribir código, ¿no es así?

Otra forma de evitar que se registren áreas de widgets es cuando el desarrollador ha utilizado un callback y un hook adecuado, por ejemplo:

add_action( 'widget_init', 'my_register_widgets' );

en ese caso puedes usar remove_action para eliminarlo y evitar el registro de widgets:

remove_action( 'widget_init', 'my_register_widgets' );

Para asegurarte de que la acción se elimina, llama a remove_action después de que la acción se haya añadido. Si el add_action está dentro de functions.php sin estar envuelto en ningún hook, entonces usa remove_action dentro de un callback del hook after_setup_theme. Lee aquí sobre add_action y remove_action.

Otra posibilidad es que el desarrollador registre la barra lateral sin usar un hook adecuado, simplemente llamando directamente a register_sidebar en functions.php:

// functions.php
register_sidebar( array( 'id' => 'a-sidebar-id', ... ) );

En este caso, puedes eliminarla usando unregister_sidebar justo después de que se registre la barra lateral. El hook 'after_setup_theme', que se ejecuta después de incluir functions.php, será perfecto para este propósito:

add_action( 'after_setup_theme', function() {
    unregister_sidebar( 'a-sidebar-id' );
});

El 1% de los casos en que las áreas de widgets se pueden desactivar sin usar código es cuando el desarrollador del tema/plugin ha añadido una opción para registrar la barra lateral.

Ejemplo:

  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( ... );
  }

Si el código es así, probablemente haya alguna interfaz de configuración que te permita desactivar las áreas de widgets, pero si el desarrollador no ha proporcionado esa opción para permitir/desactivar el registro de barras laterales, la única opción es editar el código.


PD: no tomes las estadísticas del 99% / 1% como algo serio...

7 abr 2014 20:03:20
Comentarios

Si se hace correctamente (a través de un callback, enganchado a una acción apropiada, como widgets_init), entonces es 100% posible desregistrar áreas de widgets. Esa es parte de la razón por la que necesitamos ver el código.

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

Gracias, pero ¿cómo navego/encuentro ese archivo donde necesito editar el código?

Genadinik Genadinik
7 abr 2014 20:07:38

Puedes usar FTP. Los temas se encuentran en /wp-content/themes. Deberías comenzar con el archivo functions.php del Tema.

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

@ChipBennett ¡gracias! ¿Qué opinas de editar el PHP directamente dentro del CMS de WordPress? No tengo acceso para descargar esta instalación particular de WordPress. ¿Es una práctica aceptable cambiar el PHP directamente dentro de WordPress? El sitio está en vivo pero no tiene visitantes, así que nadie verá problemas temporales.

Genadinik Genadinik
7 abr 2014 20:13:34

Personalmente creo que el editor de archivos del admin es la peor "función" en todo WordPress, y nunca debería ser usado por alguien que no esté cómodo recuperándose de errores fatales que pueden, y casi seguramente ocurrirán, al usar un editor tan malo.

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

@ChipBennett sí, eso es lo que escuché. ¿Por qué es tan malo? Estoy cómodo editando PHP. Claro, preferiría no hacerlo. Pero ¿hay algo realmente malo con ese editor? ¿Tiene errores?

Genadinik Genadinik
7 abr 2014 20:16:30

Pruébalo y rápidamente entenderás por qué.

Chip Bennett Chip Bennett
7 abr 2014 20:24:44
Mostrar los 2 comentarios restantes
7

Sí, es posible desregistrar un área de widgets.

Las áreas de widgets, también conocidas como Barras laterales dinámicas, se registran mediante register_sidebar(), que se verá algo así:

register_sidebar( array(
'name'          => __( 'Nombre de la barra lateral', '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>' 
) ); 

Ahora, si esto está implementado correctamente en el Tema, esta función se encontrará dentro de un callback, enganchado a una acción apropiada, normalmente widgets_init:

function wpse140550_register_sidebars() {

    register_sidebar( array(
    'name'          => __( 'Nombre de la barra lateral', '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' );

Entonces, si conoces el 'id' de la Barra lateral dinámica, puedes desregistrarla usando la función complementaria: unregister_sidebar():

unregister_sidebar( 'unique-sidebar-id' );

Pero esta función debe llamarse en la misma acción en la que está enganchada la llamada a register_sidebar().

En nuestro ejemplo bien hecho, sabemos que esa acción es widgets_init:

function wpse140550_deregister_sidebar() {

    unregister_sidebar( 'unique-sidebar-id' );

}
add_action( 'widgets_init', 'wpse140550_deregister_sidebar' );

Ahora, esto debería funcionar correctamente, incluso si el Tema no está enganchado a una acción explícita. El archivo functions.php del Tema se ejecuta en (IIRC) plugins_loaded, que ocurre antes de widgets_init, y widgets_init es donde realmente suceden las funciones de Widgets.

Por lo tanto, puedes usar un Tema hijo o un Plugin de funcionalidad del sitio para eliminar la Barra lateral dinámica. Principalmente necesitas conocer su 'id' para hacerlo.

7 abr 2014 20:23:14
Comentarios

Gracias por una respuesta tan elaborada. Naturalmente, tengo más preguntas :) ¿Cómo puedo averiguar el ID del widget?

Genadinik Genadinik
7 abr 2014 20:27:17

¿Y hay algún plugin de funcionalidad para el sitio que recomendarías que sea bueno? ¡Gracias de nuevo!

Genadinik Genadinik
7 abr 2014 20:29:28

"¿Cómo puedo averiguar el ID del widget?" - por eso sigo pidiendo el código usado para registrar la barra lateral.

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

"¿Y hay algún plugin de funcionalidad del sitio que recomendarías que sea bueno?" - un plugin de funcionalidad del sitio es creado por el usuario, para almacenar funciones específicas del sitio y fragmentos de código. Así que no: no hay nada que recomendar.

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

No exactamente. Tu código puede no funcionar. Todo es cuestión de prioridad: para unregister_sidebar la barra lateral debe estar registrada primero. Si tanto el registro como la anulación ocurren en el mismo hook y con la misma prioridad (como en tu código), entonces es un tiro al aire. Para asegurarte de que funcione, debes anular el registro con una prioridad menor que la del registro. En el ejemplo hecho correctamente, eliminar la acción antes de que ocurra (justo después de que se agregue) es considerablemente más confiable. PD: para ser precisos, functions.php se incluye dentro de ningún hook, entre 'setup_theme' (justo después de 'plugins_loaded') y 'after_setup_theme'.

gmazzap gmazzap
7 abr 2014 20:40:06

@ChipBennett acabo de agregar mi código de functions.php a mi pregunta original. ¿era eso lo que pedías?

Genadinik Genadinik
7 abr 2014 20:49:36

Estás buscando una llamada a register_sidebar(), dentro de un callback, enganchado a widgets_init. ¿Encuentras ese tipo de código en tu archivo functions.php?

Chip Bennett Chip Bennett
7 abr 2014 20:51:19
Mostrar los 2 comentarios restantes
0


Al menos yo pude hacerlo en mi sitio que está alojado directamente en wordpress.com

Instrucciones:
Elimina todos los widgets ubicados en esa área en particular y se colapsará y ocultará automáticamente.

Listo.

Nota: Esta respuesta no es para el autor original del post, sino para otras personas que lleguen aquí como yo lo hice.

5 dic 2018 07:56:24