Pot elimina o zonă de widget-uri fără a edita codul?

7 apr. 2014, 19:46:51
Vizualizări: 19.7K
Voturi: 1

Am de-a face cu o configurație WordPress care are 2 zone de widget-uri. Una dintre ele pare să strice pagina și vreau să o elimin.

Aici este captura de ecran a configurației mele de widget-uri

Captură ecran zonă widget-uri WordPress

Cum pot elimina Zona Principală de Widget-uri fără a edita niciun cod? Este posibil acest lucru?

Și dacă nu este posibil, cum pot elimina această zonă în general?

Mulțumesc!!

Și aici este fișierul functions.php:

/*
 * Setați valoarea lățimii conținutului pe baza designului temei.
 *
 * @see twentythirteen_content_width() pentru ajustări specifice șabloanelor.
 */
if ( ! isset( $content_width ) )
    $content_width = 604;

/**
 * Adăugați suport pentru o imagine personalizată a antetului.
 */
require get_template_directory() . '/inc/custom-header.php';

/**
 * Twenty Thirteen funcționează doar în WordPress 3.6 sau versiuni ulterioare.
 */
if ( version_compare( $GLOBALS['wp_version'], '3.6-alpha', '<' ) )
    require get_template_directory() . '/inc/back-compat.php';

/**
 * Configurarea temei Twenty Thirteen.
 *
 * Stabilește valorile implicite ale temei și înregistrează diferitele funcționalități WordPress
 * pe care Twenty Thirteen le suportă.
 *
 * @uses load_theme_textdomain() Pentru suportul de traducere/localizare.
 * @uses add_editor_style() Pentru adăugarea de fișiere CSS pentru Editorul Vizual.
 * @uses add_theme_support() Pentru suportul legăturilor automate, formatele
 * postărilor și miniaturile postărilor.
 * @uses register_nav_menu() Pentru suportul unui meniu de navigare.
 * @uses set_post_thumbnail_size() Pentru setarea unei dimensiuni personalizate a miniaturii postării.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_setup() {
    /*
     * Face Twenty Thirteen disponibil pentru traducere.
     *
     * Traducerile pot fi adăugate în directorul /languages/.
     * Dacă construiți o temă bazată pe Twenty Thirteen, utilizați căutare și
     * înlocuire pentru a schimba 'twentythirteen' cu numele temei voastre în toate
     * fișierele șablon.
     */
    load_theme_textdomain( 'twentythirteen', get_template_directory() . '/languages' );

    /*
     * Această temă stilizează editorul vizual pentru a semăna cu stilul temei,
     * în special fontul, culorile, pictogramele și lățimea coloanei.
     */
    add_editor_style( array( 'css/editor-style.css', 'fonts/genericons.css', twentythirteen_fonts_url() ) );

    // Adaugă legături RSS feed în <head> pentru postări și comentarii.
    add_theme_support( 'automatic-feed-links' );

    /*
     * Schimbă marcajul implicit pentru formularul de căutare, formularul de comentarii,
     * și comentariile pentru a afișa HTML5 valid.
     */
    add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list' ) );

    /*
     * Această temă suportă toate formatele de postare disponibile implicit.
     * Vezi http://codex.wordpress.org/Post_Formats
     */
    add_theme_support( 'post-formats', array(
        'aside', 'audio', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video'
    ) );

    // Această temă utilizează wp_nav_menu() într-o singură locație.
    register_nav_menu( 'primary', __( 'Meniu de Navigare', 'twentythirteen' ) );

    /*
     * Această temă utilizează o dimensiune personalizată pentru imaginile reprezentative, afișate pe
     * postările "standard" și pagini.
     */
    add_theme_support( 'post-thumbnails' );
    set_post_thumbnail_size( 604, 270, true );

    // Această temă utilizează propriile stiluri pentru galerie.
    add_filter( 'use_default_gallery_style', '__return_false' );
}
add_action( 'after_setup_theme', 'twentythirteen_setup' );

/**
 * Returnează URL-ul fișierului CSS al fonturilor Google, dacă este disponibil.
 *
 * Utilizarea fonturilor Source Sans Pro și Bitter implicit este localizată. Pentru limbile
 * care utilizează caractere neacceptate de font, acesta poate fi dezactivat.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return string URL-ul fișierului CSS al fonturilor sau șir gol dacă este dezactivat.
 */
function twentythirteen_fonts_url() {
    $fonts_url = '';

    /* Traducători: Dacă în limba dumneavoastră există caractere care nu sunt
     * acceptate de Source Sans Pro, traduceți acest lucru în 'off'. Nu traduceți
     * în propria limbă.
     */
    $source_sans_pro = _x( 'on', 'Font Source Sans Pro: activat sau dezactivat', 'twentythirteen' );

    /* Traducători: Dacă în limba dumneavoastră există caractere care nu sunt
     * acceptate de Bitter, traduceți acest lucru în 'off'. Nu traduceți în propria
     * limbă.
     */
    $bitter = _x( 'on', 'Font Bitter: activat sau dezactivat', '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;
}

/**
 * Încarcă scripturile și stilurile pentru front-end.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_scripts_styles() {
    /*
     * Adaugă JavaScript la paginile cu formularul de comentarii pentru a suporta
     * site-urile cu comentarii în lanț (când sunt utilizate).
     */
    if ( is_singular() && comments_open() && get_option( 'thread_comments' ) )
        wp_enqueue_script( 'comment-reply' );

    // Adaugă Masonry pentru alinierea verticală a widget-urilor din subsol.
    if ( is_active_sidebar( 'sidebar-1' ) )
        wp_enqueue_script( 'jquery-masonry' );

    // Încarcă fișierul JavaScript cu funcționalități specifice pentru Twenty Thirteen.
    wp_enqueue_script( 'twentythirteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '2013-07-18', true );

    // Adaugă fonturile Source Sans Pro și Bitter, utilizate în fișierul CSS principal.
    wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null );

    // Adaugă fontul Genericons, utilizat în fișierul CSS principal.
    wp_enqueue_style( 'genericons', get_template_directory_uri() . '/fonts/genericons.css', array(), '2.09' );

    // Încarcă fișierul nostru CSS principal.
    wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' );

    // Încarcă fișierul CSS specific pentru 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' );

/**
 * Filtrează titlul paginii.
 *
 * Creează un titlu formatat frumos și mai specific pentru elementul de titlu din
 * head-ul documentului, bazat pe vizualizarea curentă.
 *
 * @since Twenty Thirteen 1.0
 *
 * @param string $title Titlul implicit pentru vizualizarea curentă.
 * @param string $sep   Separatorul opțional.
 * @return string Titlul filtrat.
 */
function twentythirteen_wp_title( $title, $sep ) {
    global $paged, $page;

    if ( is_feed() )
        return $title;

    // Adaugă numele site-ului.
    $title .= get_bloginfo( 'name' );

    // Adaugă descrierea site-ului pentru pagina de start/pagina frontală.
    $site_description = get_bloginfo( 'description', 'display' );
    if ( $site_description && ( is_home() || is_front_page() ) )
        $title = "$title $sep $site_description";

    // Adaugă un număr de pagină dacă este necesar.
    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 );

/**
 * Înregistrează două zone de widget-uri.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_widgets_init() {
    register_sidebar( array(
        'name'          => __( 'Zona Principală de Widget-uri', 'twentythirteen' ),
        'id'            => 'sidebar-1',
        'description'   => __( 'Apare în secțiunea de subsol a site-ului.', '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'          => __( 'Zona Secundară de Widget-uri', 'twentythirteen' ),
        'id'            => 'sidebar-2',
        'description'   => __( 'Apare pe postări și pagini în bara laterală.', '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' ) ) :
/**
 * Afișează navigarea către următorul/anterior set de postări când este aplicabil.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_paging_nav() {
    global $wp_query;

    // Nu afișa marcaj gol dacă există doar o pagină.
    if ( $wp_query->max_num_pages < 2 )
        return;
    ?>
    <nav class="navigation paging-navigation" role="navigation">
        <h1 class="screen-reader-text"><?php _e( 'Navigare postări', '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ări mai vechi', 'twentythirteen' ) ); ?></div>
            <?php endif; ?>

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

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

if ( ! function_exists( 'twentythirteen_post_nav' ) ) :
/**
 * Afișează navigarea către următoarea/anterioră postare când este aplicabil.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_post_nav() {
    global $post;

    // Nu afișa marcaj gol dacă nu există nicăieri de navigat.
    $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( 'Navigare postare', 'twentythirteen' ); ?></h1>
        <div class="nav-links">

            <?php previous_post_link( '%link', _x( '<span class="meta-nav">&larr;</span> %title', 'Legătură postare anterioară', 'twentythirteen' ) ); ?>
            <?php next_post_link( '%link', _x( '%title <span class="meta-nav">&rarr;</span>', 'Legătură postare următoare', 'twentythirteen' ) ); ?>

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

if ( ! function_exists( 'twentythirteen_entry_meta' ) ) :
/**
 * Afișează HTML cu meta informații pentru postarea curentă: categorii, etichete, legătură permanentă, autor și dată.
 *
 * Creați-vă propria funcție twentythirteen_entry_meta() pentru a o suprascrie într-o temă copil.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_entry_meta() {
    if ( is_sticky() && is_home() && ! is_paged() )
        echo '<span class="featured-post">' . __( 'Lipit', 'twentythirteen' ) . '</span>';

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

    // Traducători: folosit între elementele listei, există un spațiu după virgulă.
    $categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) );
    if ( $categories_list ) {
        echo '<span class="categories-links">' . $categories_list . '</span>';
    }

    // Traducători: folosit între elementele listei, există un spațiu după virgulă.
    $tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) );
    if ( $tag_list ) {
        echo '<span class="tags-links">' . $tag_list . '</span>';
    }

    // Autorul postării
    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( __( 'Vezi toate postările de la %s', 'twentythirteen' ), get_the_author() ) ),
            get_the_author()
        );
    }
}
endif;

if ( ! function_exists( 'twentythirteen_entry_date' ) ) :
/**
 * Afișează HTML cu informații despre dată pentru postarea curentă.
 *
 * Creați-vă propria funcție twentythirteen_entry_date() pentru a o suprascrie într-o temă copil.
 *
 * @since Twenty Thirteen 1.0
 *
 * @param boolean $echo (opțional) Dacă să afișeze data. Implicit true.
 * @return string Data formatată în HTML.
 */
function twentythirteen_entry_date( $echo = true ) {
    if ( has_post_format( array( 'chat', 'status' ) ) )
        $format_prefix = _x( '%1$s pe %2$s', '1: nume format postare. 2: dată', '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( __( 'Legătură permanentă către %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' ) ) :
/**
 * Afișează imaginea atașată cu o legătură către următoarea imagine atașată.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return void
 */
function twentythirteen_the_attached_image() {
    /**
     * Filtrează dimensiunea imaginii atașate de utilizat.
     *
     * @since Twenty thirteen 1.0
     *
     * @param array $size {
     *     @type int Înălțimea imaginii atașate în pixeli.
     *     @type int Lățimea imaginii atașate în pixeli.
     * }
     */
    $attachment_size     = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) );
    $next_attachment_url = wp_get_attachment_url();
    $post                = get_post();

    /*
     * Obține ID-urile tuturor imaginilor atașate într-o galerie, astfel încât să putem obține URL-ul
     * următoarei imagini adiacente într-o galerie, sau prima imagine (dacă ne uităm la
     * ultima imagine dintr-o galerie), sau, într-o galerie cu o singură imagine, doar
     * legătura către acel fișier imagine.
     */
    $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'
    ) );

    // Dacă există mai mult de 1 imagine atașată într-o galerie...
    if ( count( $attachment_ids ) > 1 ) {
        foreach ( $attachment_ids as $attachment_id ) {
            if ( $attachment_id == $post->ID ) {
                $next_id = current( $attachment_ids );
                break;
            }
        }

        // obține URL-ul următoarei imagini atașate...
        if ( $next_id )
            $next_attachment_url = get_attachment_link( $next_id );

        // sau obține URL-ul primei imagini atașate.
        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;

/**
 * Returnează URL-ul postării.
 *
 * @uses get_url_in_content() pentru a obține URL-ul din meta-ul postării (dacă există) sau
 * prima legătură găsită în conținutul postării.
 *
 * Revenire la legătura permanentă a postării dacă nu se găsește niciun URL în postare.
 *
 * @since Twenty Thirteen 1.0
 *
 * @return string URL-ul formatului 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() );
}

/**
 * Extinde clasele implicite ale corpului WordPress.
 *
 * Adaugă clase corpului pentru a denota:
 * 1. Autori unici sau multipli.
 * 2. Widget-uri active în bara laterală pentru a schimba aspectul și spațierea.
 * 3. Când avatarurile sunt dezactivate în setările de discuții.
 *
 * @since Twenty Thirteen 1.0
 *
 * @param array $classes O listă de valori existente ale claselor corpului.
 * @return array Lista filtrată a claselor corpului.
 */
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' );

/**
 * Ajustează valoarea content_width pentru formatele de postare video și șabloanele de atașare.
 *
 * @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' );

/**
 * Adaugă suport postMessage pentru titlul și descrierea site-ului pentru Personalizator.
 *
 * @since Twenty Thirteen 1.0
 *
 * @param WP_Customize_Manager $wp_customize Obiectul Personalizator.
 * @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' );

/**
 * Încarcă gestionarii JavaScript postMessage pentru Personalizator.
 *
 * Leagă gestionarii JavaScript pentru a face ca previzualizarea Personalizatorului să
 * reîncarce modificările asincron.
 *
 * @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
Comentarii

Te rog să editezi întrebarea ta pentru a include codul care adaugă zona de Widget pe care dorești să o elimini.

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

@ChipBennett de fapt eu nu am adăugat-o niciodată prin cod. A fost pusă acolo de altcineva. Singura modalitate de a adăuga/elimina zone de Widget este prin cod?

Genadinik Genadinik
7 apr. 2014 19:52:47

Din păcate, aceasta este singura modalitate de a adăuga/elimina zone de Widget. Ca o observație laterală, chiar ar trebui să ții pluginurile actualizate din motive de securitate.

Howdy_McGee Howdy_McGee
7 apr. 2014 19:54:01

@ChipBennett am înțeles despre zonele de widget-uri. Care este cea mai bună metodă de a le edita? Direct în WordPress? Cum pot naviga acolo?

Genadinik Genadinik
7 apr. 2014 19:56:06

Zona de widget-uri este înregistrată de Temă (cel mai probabil - este posibil, dar nu probabil ca un Plugin să înregistreze o zonă de widget-uri). Codul pentru înregistrare se va afla în Tema ta - probabil în fișierul functions.php. Pentru a știi cum să dezînregistrăm zona de widget-uri, mai întâi trebuie să știm cum este înregistrată.

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

@ChipBennett mulțumesc Chip, deci cum pot naviga efectiv pentru a edita fișierul functions.php? :)

Genadinik Genadinik
7 apr. 2014 20:11:40

Puteți utiliza FTP. Temele se găsesc în /wp-content/themes. Va trebui să începeți cu fișierul functions.php al temei.

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

Încă nu ați explicat exact cum vă afectează pagina, eliminarea barei laterale poate să nu fie soluția de care aveți nevoie, iar orice răspuns pe care vi-l oferim este doar o presupunere. Poate fi doar o problemă de CSS. Vă rugăm să furnizați mai multe informații despre problema dumneavoastră reală, altfel doar presupunem că este vorba de o problemă cu bara laterală. De asemenea, ce modificări au fost aduse temei 2013 pe care o utilizați?

Tom J Nowell Tom J Nowell
7 apr. 2014 20:55:06
Arată celelalte 3 comentarii
Toate răspunsurile la întrebare 3
7

Nu, nu este posibil, nu în 99% din cazuri.

Zonele de widget-uri sunt adăugate cu un apel register_sidebar într-un fișier php. Până când WordPress citește acea linie, zona de widget-uri este înregistrată.

Așadar, cea mai ușoară și întotdeauna disponibilă metodă de a preveni înregistrarea unei zone de widget-uri este eliminarea (sau cel puțin comentarea) acelei linii.

Dacă zona de widget-uri este înregistrată în interiorul unei funcții a temei, iar această funcție este înfășurată într-un if ( ! function_exists ), de exemplu:

if ( ! function_exists('register_theme_stuff') ) {

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

}

atunci puteți crea o temă copil și puteți înlocui funcția fără a înregistra zona de widget-uri, dar asta înseamnă să scrieți cod, nu-i așa?

O altă metodă de a preveni înregistrarea zonelor de widget-uri este atunci când dezvoltatorul a folosit un callback și un hook adecvat, de exemplu:

add_action( 'widget_init', 'my_register_widgets' );

atunci puteți folosi remove_action pentru a o elimina și a preveni înregistrarea widget-urilor:

remove_action( 'widget_init', 'my_register_widgets' );

Pentru a vă asigura că acțiunea este eliminată, apelați remove_action după ce acțiunea a fost adăugată. Dacă add_action se află în functions.php și nu este înfășurat în niciun hook, atunci folosiți remove_action înfășurat într-un callback al acțiunii after_setup_theme. Citiți aici despre add_action și remove_action.

O altă posibilitate este ca dezvoltatorul să înregistreze bara laterală fără a folosi un hook adecvat, ci să apeleze direct register_sidebar în functions.php:

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

În acest caz, o puteți elimina folosind unregister_sidebar imediat după ce bara laterală este înregistrată, 'after_setup_theme', care este declanșat după ce functions.php este inclus, va fi perfect pentru scop:

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

Cele 1% din cazuri când zonele de widget-uri pot fi dezactivate fără a folosi cod, este atunci când dezvoltatorul temei/pluginului a adăugat o opțiune pentru a înregistra bara laterală.

Exemplu:

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

Dacă codul arată astfel, atunci probabil există o interfață de setări care vă permite să dezactivați zonele de widget-uri, dar dacă dezvoltatorul nu a oferit acea opțiune pentru a permite/împiedica înregistrarea barei laterale, atunci singura opțiune este editarea codului.


PS nu luați statisticile 99% / 1% în serios...

7 apr. 2014 20:03:20
Comentarii

Dacă este făcut corect (prin callback, conectat la o acțiune adecvată, cum ar fi widgets_init), atunci este 100% posibil să dezînregistrezi zonele de widget-uri. Tocmai de aceea trebuie să vedem codul.

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

Mulțumesc, dar cum pot naviga/găsi acel fișier unde trebuie să editez codul?

Genadinik Genadinik
7 apr. 2014 20:07:38

Poți folosi FTP. Temele se găsesc în /wp-content/themes. Ar trebui să începi cu fișierul functions.php al temei.

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

@ChipBennett mulțumesc! ce părere ai despre editarea php-ului direct în interiorul CMS-ului WordPress? Nu am acces să descarc această configurație specifică WordPress. Este o practică acceptabilă să modifici php-ul direct în WordPress? Site-ul este live dar nu are vizitatori, așa că nimeni nu va vedea eventualele probleme temporare.

Genadinik Genadinik
7 apr. 2014 20:13:34

Personal, cred că editorul de fișiere din admin este cea mai proastă „funcționalitate” din întregul WordPress și nu ar trebui folosit de nimeni care nu este confortabil cu recuperarea din erori fatale care pot, și aproape sigur vor, rezulta din folosirea unui editor atât de slab.

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

@ChipBennett da, asta am auzit și eu. De ce este atât de prost? Sunt ok cu editarea php-ului. Desigur, aș prefera să nu o fac. Dar este ceva în neregulă cu acel editor? Are bug-uri?

Genadinik Genadinik
7 apr. 2014 20:16:30

Încearcă să-l folosești și vei înțelege rapid de ce.

Chip Bennett Chip Bennett
7 apr. 2014 20:24:44
Arată celelalte 2 comentarii
7

Da, este posibil să dezînregistrezi o zonă de widget-uri.

Zonele de widget-uri, cunoscute și sub numele de Bare laterale dinamice, sunt înregistrate prin intermediul funcției register_sidebar(), care arată cam așa:

register_sidebar( array(
'name'          => __( 'Numele barei laterale', '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>' 
) ); 

Dacă această funcție este implementată corect în temă, ea va fi găsită în interiorul unui callback, atașat unei acțiuni adecvate, de obicei widgets_init:

function wpse140550_register_sidebars() {

    register_sidebar( array(
    'name'          => __( 'Numele barei laterale', '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' );

Deci, dacă cunoști 'id'-ul Barei laterale dinamice, o poți dezînregistra folosind funcția complementară: unregister_sidebar():

unregister_sidebar( 'unique-sidebar-id' );

Dar această funcție trebuie apelată în cadrul aceleiași acțiuni în care este atașat apelul register_sidebar().

În exemplul nostru corect implementat, știm că acea acțiune este widgets_init:

function wpse140550_deregister_sidebar() {

    unregister_sidebar( 'unique-sidebar-id' );

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

Această metodă ar trebui să funcționeze corect, chiar dacă tema nu este atașată unei acțiuni explicite. Fișierul functions.php al temei se execută la (după câte îmi amintesc) plugins_loaded, care are loc înainte de widgets_init, iar widgets_init este momentul în care funcțiile de widget-uri sunt procesate.

Deci, poți folosi fie o Temă copil, fie un Plugin de funcționalități pentru site, pentru a elimina Bara laterală dinamică. În principal, trebuie să-i cunoști 'id'-ul pentru a face acest lucru.

7 apr. 2014 20:23:14
Comentarii

Mulțumesc pentru un răspuns atât de detaliat. În mod natural, am și mai multe întrebări :) Cum pot afla ID-ul widget-ului?

Genadinik Genadinik
7 apr. 2014 20:27:17

Și există vreun plugin de funcționalitate pentru site pe care l-ați recomanda ca fiind bun? Mulțumesc din nou!

Genadinik Genadinik
7 apr. 2014 20:29:28

"Cum pot afla ID-ul widget-ului?" - de aceea tot cer codul folosit pentru înregistrarea sidebar-ului.

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

"Și există vreun plugin de funcționalitate pentru site pe care l-ați recomanda și care este bun?" - un plugin de funcționalitate pentru site este creat de utilizator, pentru a stoca funcții specifice site-ului și bucăți de cod. Deci, nu: nu este nimic de recomandat.

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

Nu chiar. Codul tău s-ar putea să nu funcționeze. Totul se reduce la prioritate: pentru a unregister_sidebar, sidebar-ul trebuie mai întâi să fie înregistrat. Dacă atât înregistrarea cât și dezînregistrarea au loc la același hook și cu aceeași prioritate (ca în codul tău), atunci este o loterie. Pentru a te asigura că funcționează, trebuie să dezînregistrezi la o prioritate mai mică decât înregistrarea. În exemplul făcut-corect, eliminarea acțiunii înainte să se întâmple (imediat după ce este adăugată) este mult mai sigură. PS: pentru precizie, functions.php este inclus fără hook, între 'setup_theme' (imediat după 'plugins_loaded') și 'after_setup_theme'.

gmazzap gmazzap
7 apr. 2014 20:40:06

@ChipBennett tocmai am adăugat codul meu din functions.php în întrebarea mea originală. asta voiai să vezi?

Genadinik Genadinik
7 apr. 2014 20:49:36

Cauți un apel register_sidebar(), în interiorul unui callback, legat la widgets_init. Găsești acest tip de cod în fișierul tău functions.php?

Chip Bennett Chip Bennett
7 apr. 2014 20:51:19
Arată celelalte 2 comentarii
0

Da
Cel puțin am reușit să fac asta pe site-ul meu care este găzduit direct pe wordpress.com

Instrucțiuni:
Eliminați toate widget-urile din acea zonă specifică și acestea se vor compacta și ascunde automat.

Gata.

Notă: Acest răspuns nu este pentru OP, ci mai degrabă pentru alte persoane care ajung aici așa cum am făcut eu.

5 dec. 2018 07:56:24