Kann ich einen Widget-Bereich entfernen, ohne Code zu bearbeiten?

Ich habe es mit einem WordPress-Setup zu tun, das 2 Widget-Bereiche hat. Man scheint die Seite zu brechen, und ich möchte sie entfernen.

Hier ist der Screenshot meiner Widget-Einrichtung

Bildbeschreibung hier eingeben

Wie kann ich den Haupt-Widget-Bereich entfernen, ohne Code zu bearbeiten? Ist das möglich?

Und wenn nicht möglich, wie kann ich diesen Bereich generell entfernen?

Vielen Dank!!

Und hier ist die Datei functions.php:

/* * Set up the content width value based on the theme's design. * * @see twentythirteen_content_width() for template-specific adjustments. */ if ( ! isset( $content_width ) ) $content_width = 604; /** * Add support for a custom header image. */ require get_template_directory() . '/inc/custom-header.php'; /** * Twenty Thirteen only works in WordPress 3.6 or later. */ if ( version_compare( $GLOBALS['wp_version'], '3.6-alpha', '<' ) ) require get_template_directory() . '/inc/back-compat.php'; /** * Twenty Thirteen setup. * * Sets up theme defaults and registers the various WordPress features that * Twenty Thirteen supports. * * @uses load_theme_textdomain() For translation/localization support. * @uses add_editor_style() To add Visual Editor stylesheets. * @uses add_theme_support() To add support for automatic feed links, post * formats, and post thumbnails. * @uses register_nav_menu() To add support for a navigation menu. * @uses set_post_thumbnail_size() To set a custom post thumbnail size. * * @since Twenty Thirteen 1.0 * * @return void */ function twentythirteen_setup() { /* * Makes Twenty Thirteen available for translation. * * Translations can be added to the /languages/ directory. * If you're building a theme based on Twenty Thirteen, use a find and * replace to change 'twentythirteen' to the name of your theme in all * template files. */ load_theme_textdomain( 'twentythirteen', get_template_directory() . '/languages' ); /* * This theme styles the visual editor to resemble the theme style, * specifically font, colors, icons, and column width. */ add_editor_style( array( 'css/editor-style.css', 'fonts/genericons.css', twentythirteen_fonts_url() ) ); // Adds RSS feed links to  for posts and comments. add_theme_support( 'automatic-feed-links' ); /* * Switches default core markup for search form, comment form, * and comments to output valid HTML5. */ add_theme_support( 'html5', array( 'search-form', 'comment-form', 'comment-list' ) ); /* * This theme supports all available post formats by default. * See http://codex.wordpress.org/Post_Formats */ add_theme_support( 'post-formats', array( 'aside', 'audio', 'chat', 'gallery', 'image', 'link', 'quote', 'status', 'video' ) ); // This theme uses wp_nav_menu() in one location. register_nav_menu( 'primary', __( 'Navigation Menu', 'twentythirteen' ) ); /* * This theme uses a custom image size for featured images, displayed on * "standard" posts and pages. */ add_theme_support( 'post-thumbnails' ); set_post_thumbnail_size( 604, 270, true ); // This theme uses its own gallery styles. add_filter( 'use_default_gallery_style', '__return_false' ); } add_action( 'after_setup_theme', 'twentythirteen_setup' ); /** * Return the Google font stylesheet URL, if available. * * The use of Source Sans Pro and Bitter by default is localized. For languages * that use characters not supported by the font, the font can be disabled. * * @since Twenty Thirteen 1.0 * * @return string Font stylesheet or empty string if disabled. */ function twentythirteen_fonts_url() { $fonts_url = ''; /* Translators: If there are characters in your language that are not * supported by Source Sans Pro, translate this to 'off'. Do not translate * into your own language. */ $source_sans_pro = _x( 'on', 'Source Sans Pro font: on or off', 'twentythirteen' ); /* Translators: If there are characters in your language that are not * supported by Bitter, translate this to 'off'. Do not translate into your * own language. */ $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; } /** * Enqueue scripts and styles for the front end. * * @since Twenty Thirteen 1.0 * * @return void */ function twentythirteen_scripts_styles() { /* * Adds JavaScript to pages with the comment form to support * sites with threaded comments (when in use). */ if ( is_singular() && comments_open() && get_option( 'thread_comments' ) ) wp_enqueue_script( 'comment-reply' ); // Adds Masonry to handle vertical alignment of footer widgets. if ( is_active_sidebar( 'sidebar-1' ) ) wp_enqueue_script( 'jquery-masonry' ); // Loads JavaScript file with functionality specific to Twenty Thirteen. wp_enqueue_script( 'twentythirteen-script', get_template_directory_uri() . '/js/functions.js', array( 'jquery' ), '2013-07-18', true ); // Add Source Sans Pro and Bitter fonts, used in the main stylesheet. wp_enqueue_style( 'twentythirteen-fonts', twentythirteen_fonts_url(), array(), null ); // Add Genericons font, used in the main stylesheet. wp_enqueue_style( 'genericons', get_template_directory_uri() . '/fonts/genericons.css', array(), '2.09' ); // Loads our main stylesheet. wp_enqueue_style( 'twentythirteen-style', get_stylesheet_uri(), array(), '2013-07-18' ); // Loads the Internet Explorer specific stylesheet. 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' ); /** * Filter the page title. * * Creates a nicely formatted and more specific title element text for output * in head of document, based on current view. * * @since Twenty Thirteen 1.0 * * @param string $title Default title text for current view. * @param string $sep Optional separator. * @return string The filtered title. */ function twentythirteen_wp_title( $title, $sep ) { global $paged, $page; if ( is_feed() ) return $title; // Add the site name. $title .= get_bloginfo( 'name' ); // Add the site description for the home/front page. $site_description = get_bloginfo( 'description', 'display' ); if ( $site_description && ( is_home() || is_front_page() ) ) $title = "$title $sep $site_description"; // Add a page number if necessary. 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 ); /** * Register two widget areas. * * @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' => '', 'before_title' => '

', 'after_title' => '

', ) ); register_sidebar( array( 'name' => __( 'Secondary Widget Area', 'twentythirteen' ), 'id' => 'sidebar-2', 'description' => __( 'Appears on posts and pages in the sidebar.', 'twentythirteen' ), 'before_widget' => '', 'before_title' => '

', 'after_title' => '

', ) ); } add_action( 'widgets_init', 'twentythirteen_widgets_init' ); if ( ! function_exists( 'twentythirteen_paging_nav' ) ) : /** * Display navigation to next/previous set of posts when applicable. * * @since Twenty Thirteen 1.0 * * @return void */ function twentythirteen_paging_nav() { global $wp_query; // Don't print empty markup if there's only one page. if ( $wp_query->max_num_pages post_parent ) : get_adjacent_post( false, '', true ); $next = get_adjacent_post( false, '', false ); if ( ! $next && ! $previous ) return; ?> <?php } endif; if ( ! function_exists( 'twentythirteen_entry_meta' ) ) : /** * Print HTML with meta information for current post: categories, tags, permalink, author, and date. * * Create your own twentythirteen_entry_meta() to override in a child theme. * * @since Twenty Thirteen 1.0 * * @return void */ function twentythirteen_entry_meta() { if ( is_sticky() && is_home() && ! is_paged() ) echo '' . __( 'Sticky', 'twentythirteen' ) . ''; if ( ! has_post_format( 'link' ) && 'post' == get_post_type() ) twentythirteen_entry_date(); // Translators: used between list items, there is a space after the comma. $categories_list = get_the_category_list( __( ', ', 'twentythirteen' ) ); if ( $categories_list ) { echo '' . $categories_list . ''; } // Translators: used between list items, there is a space after the comma. $tag_list = get_the_tag_list( '', __( ', ', 'twentythirteen' ) ); if ( $tag_list ) { echo '' . $tag_list . ''; } // Post author if ( 'post' == get_post_type() ) { printf( '', 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' ) ) : /** * Print HTML with date information for current post. * * Create your own twentythirteen_entry_date() to override in a child theme. * * @since Twenty Thirteen 1.0 * * @param boolean $echo (optional) Whether to echo the date. Default true. * @return string The HTML-formatted post date. */ function twentythirteen_entry_date( $echo = true ) { if ( has_post_format( array( 'chat', 'status' ) ) ) $format_prefix = _x( 'https://wordpress.stackexchange.com/questions/140550/can-i-remove-a-widget-area-without-editing-code/%1$s on %2$s', '1: post format name. 2: date', 'twentythirteen' ); else $format_prefix = '%2$s'; $date = sprintf( '%4$s', 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' ) ) : /** * Print the attached image with a link to the next attached image. * * @since Twenty Thirteen 1.0 * * @return void */ function twentythirteen_the_attached_image() { /** * Filter the image attachment size to use. * * @since Twenty thirteen 1.0 * * @param array $size { * @type int The attachment height in pixels. * @type int The attachment width in pixels. * } */ $attachment_size = apply_filters( 'twentythirteen_attachment_size', array( 724, 724 ) ); $next_attachment_url = wp_get_attachment_url(); $post = get_post(); /* * Grab the IDs of all the image attachments in a gallery so we can get the URL * of the next adjacent image in a gallery, or the first image (if we're * looking at the last image in a gallery), or, in a gallery of one, just the * link to that image file. */ $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' ) ); // If there is more than 1 attachment in a gallery... if ( count( $attachment_ids ) > 1 ) { foreach ( $attachment_ids as $attachment_id ) { if ( $attachment_id == $post->ID ) { $next_id = current( $attachment_ids ); break; } } // get the URL of the next image attachment... if ( $next_id ) $next_attachment_url = get_attachment_link( $next_id ); // or get the URL of the first image attachment. else $next_attachment_url = get_attachment_link( array_shift( $attachment_ids ) ); } printf( '%3$s', esc_url( $next_attachment_url ), the_title_attribute( array( 'echo' => false ) ), wp_get_attachment_image( $post->ID, $attachment_size ) ); } endif; /** * Return the post URL. * * @uses get_url_in_content() to get the URL in the post meta (if it exists) or * the first link found in the post content. * * Falls back to the post permalink if no URL is found in the post. * * @since Twenty Thirteen 1.0 * * @return string The Link format URL. */ 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() ); } /** * Extend the default WordPress body classes. * * Adds body classes to denote: * 1. Single or multiple authors. * 2. Active widgets in the sidebar to change the layout and spacing. * 3. When avatars are disabled in discussion settings. * * @since Twenty Thirteen 1.0 * * @param array $classes A list of existing body class values. * @return array The filtered body class list. */ 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' ); /** * Adjust content_width value for video post formats and attachment templates. * * @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' ); /** * Add postMessage support for site title and description for the Customizer. * * @since Twenty Thirteen 1.0 * * @param WP_Customize_Manager $wp_customize Customizer object. * @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' ); /** * Enqueue Javascript postMessage handlers for the Customizer. * * Binds JavaScript handlers to make the Customizer preview * reload changes asynchronously. * * @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' );

Solutions Collecting From Web of "Kann ich einen Widget-Bereich entfernen, ohne Code zu bearbeiten?"

Nein, ist nicht möglich, nicht in 99% der Fälle.

Widget-Bereiche werden mit einem register_sidebar Aufruf in einer PHP-Datei hinzugefügt. Bis WordPress diese Zeile gelesen hat, wird der Widgetbereich registriert.

Also, die einfachste und immer verfügbare Möglichkeit zu verhindern, dass ein Widgetbereich registriert wird, ist das Entfernen (oder zumindest das Auskommentieren) dieser Zeile.

Wenn der Widgetbereich in einer Designfunktion registriert ist und diese function in ein if ( ! function_exists ) , Beispiel:

 if ( ! function_exists('register_theme_stuff') ) { function register_theme_stuff() { register_sidebar( ... ); register_post_type( ... ); register_taxonomy( ... ); } } 

Dann können Sie ein untergeordnetes Thema erstellen und die function ersetzen und den Widget-Bereich nicht registrieren, aber das heißt Code schreiben, oder?

Eine andere Möglichkeit, die Registrierung von Widgetbereichen zu verhindern, besteht darin, dass der Entwickler beispielsweise einen callback und einen geeigneten Hook verwendet hat

 add_action( 'widget_init', 'my_register_widgets' ); 

Dann können Sie remove_action , um es zu entfernen und die Widget-Registrierung zu verhindern:

 remove_action( 'widget_init', 'my_register_widgets' ); 

Um sicherzustellen, dass die Aktion entfernt wird, rufen Sie remove_action nachdem die Aktion hinzugefügt wurde. Wenn die add_action innerhalb von functions.php nicht in einen Hook eingeschlossen ist, verwenden Sie remove_action das in after_setup_theme Action Callback eingeschlossen ist. Lesen Sie hier über add_action und remove_action .

Eine andere Möglichkeit ist, dass der Entwickler die Seitenleiste ohne Verwendung eines richtigen Hooks register_sidebar indem er einfach register_sidebar in functions.php aufruft:

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

In diesem Fall können Sie es mit unregister_sidebar entfernen, direkt nachdem die Seitenleiste registriert wurde, 'after_setup_theme' , die ausgetriggers wird, nachdem functions.php enthalten ist, ist perfekt für den Bereich:

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

Die 1% -Wenn Widget-Bereiche können deaktiviert werden, ohne Code zu verwenden, ist, wenn Theme / Plugin-Entwickler eine Option hinzugefügt hat, um die Sidebar zu registrieren.

Beispiel:

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

Wenn der Code so aussieht, gibt es wahrscheinlich eine Einstellungs-Benutzeroberfläche, mit der Sie Widget-Bereiche deaktivieren können. Wenn der Entwickler diese Option jedoch nicht aktiviert hat, um die Sidebar-Registrierung als Option zuzulassen / zu deaktivieren, bearbeiten Sie den Code.


PS nehmen 99% / 1% Statistiken nicht als ernst …

Ja, es ist möglich, einen Widget-Bereich zu entfernen.

Widget-Bereiche, auch dynamische Seitenleisten genannt , werden über register_sidebar() , was in etwa so aussieht:

 register_sidebar( array( 'name' => __( 'Sidebar name', 'theme_text_domain' ), 'id' => 'unique-sidebar-id', 'description' => '', 'class' => '', 'before_widget' => '
  • ', 'after_widget' => '
  • ', 'before_title' => '

    ', 'after_title' => '

    ' ) );

    Nun, wenn dies im Theme korrekt implementiert ist, wird diese function innerhalb eines Callbacks gefunden und in eine geeignete Aktion widgets_init , normalerweise widgets_init :

     function wpse140550_register_sidebars() { register_sidebar( array( 'name' => __( 'Sidebar name', 'theme_text_domain' ), 'id' => 'unique-sidebar-id', 'description' => '', 'class' => '', 'before_widget' => '
  • ', 'after_widget' => '
  • ', 'before_title' => '

    ', 'after_title' => '

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

    Wenn Sie also die 'id' der dynamischen Sidebar kennen, können Sie die Registrierung mit der Companion-function unregister_sidebar() : unregister_sidebar() :

     unregister_sidebar( 'unique-sidebar-id' ); 

    Diese function muss jedoch in derselben Aktion aufgerufen werden, in die der Aufruf register_sidebar() eingebunden ist.

    In unserem Beispiel “done- widgets_init wissen wir, dass die Aktion widgets_init :

     function wpse140550_deregister_sidebar() { unregister_sidebar( 'unique-sidebar-id' ); } add_action( 'widgets_init', 'wpse140550_deregister_sidebar' ); 

    Nun sollte das richtig funktionieren, auch wenn das Theme nicht in eine explizite Aktion eingreift. Die Theme-Datei functions.php wird bei (IIRC) plugins_loaded , was vor widgets_init geschieht, und widgets_init ist der Ort, an dem die Widget-functionen tatsächlich stattfinden.

    Sie können also entweder ein untergeordnetes Thema oder ein Site-functions-Plugin verwenden, um die dynamische Seitenleiste zu entfernen. Sie müssen in erster Linie seine 'id' um dies zu tun.