我可以在不编辑代码的情况下删除小部件区域吗?

时间:2014-04-07 作者:Genadinik

我正在处理一个Wordpress设置,它有两个小部件区域。一个似乎正在破坏页面,我想删除它。

这是我的小部件设置的屏幕截图

enter image description here

如何在不编辑任何代码的情况下删除主窗口小部件区域?这可能吗?

如果不可能的话,我怎样才能从总体上移除这个区域?

非常感谢。

下面是函数。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 <head> 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\' => \'<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\' ) ) :
/**
 * 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 < 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\' ) ) :
/**
 * Display navigation to next/previous post when applicable.
*
* @since Twenty Thirteen 1.0
*
* @return void
*/
function twentythirteen_post_nav() {
    global $post;

    // Don\'t print empty markup if there\'s nowhere to navigate.
    $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\' ) ) :
/**
 * 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 \'<span class="featured-post">\' . __( \'Sticky\', \'twentythirteen\' ) . \'</span>\';

    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 \'<span class="categories-links">\' . $categories_list . \'</span>\';
    }

    // Translators: used between list items, there is a space after the comma.
    $tag_list = get_the_tag_list( \'\', __( \', \', \'twentythirteen\' ) );
    if ( $tag_list ) {
        echo \'<span class="tags-links">\' . $tag_list . \'</span>\';
    }

    // Post author
    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\' ) ) :
/**
 * 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( \'%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\' ) ) :
/**
 * 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( \'<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;

/**
 * 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\' );

3 个回复
最合适的回答,由SO网友:gmazzap 整理而成

不,不可能,99%的情况下都不可能。

小部件区域添加了register_sidebar 调用php文件。在WordPress读取该行之前,小部件区域将被注册。

因此,防止小部件区域注册的最简单且始终可用的方法是删除(或至少注释掉)该行。

如果小部件区域注册在主题函数中,并且此函数包装在if ( ! function_exists ), 示例:

if ( ! function_exists(\'register_theme_stuff\') ) {

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

}
然后您可以创建一个子主题并替换函数,而不注册小部件区域,但这是为了编写代码,不是吗?

防止小部件区域注册的另一种方法是开发人员使用回调和适当的挂钩,例如

add_action( \'widget_init\', \'my_register_widgets\' );
然后您可以使用remove_action 要删除它并防止小部件注册,请执行以下操作:

remove_action( \'widget_init\', \'my_register_widgets\' );
要确保操作已删除,请调用remove_action 添加操作后。如果add_action 在里面functions.php 不包在任何挂钩中,然后使用remove_action 包裹在a内after_setup_theme 操作回调。阅读此处关于add_actionremove_action.

另一种可能性是开发人员在不使用适当挂钩的情况下注册侧栏,只需大致调用register_sidebar 在里面functions.php:

// functions.php
register_sidebar( array( \'id\' => \'a-sidebar-id\', ... ) );
在这种情况下,可以使用unregister_sidebar 在侧边栏注册之后,\'after_setup_theme\', 在函数之后激发。包括php,将非常适合以下范围:

add_action( \'after_setup_theme\', function() {
    unregister_sidebar( \'a-sidebar-id\' );
});
当主题/插件开发人员添加了一个注册侧栏的选项时,可以不使用代码禁用小部件区域的1%。

示例:

  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( ... );
  }
如果代码是这样的,那么可能有一些设置UI允许您禁用小部件区域,但是如果开发人员没有提供允许/不允许侧栏注册的选项,那么唯一的选项就是编辑代码。

PS不要将99%/1%的统计数据视为严重。。。

SO网友:Chip Bennett

是的,可以注销小部件区域。

小部件区域也称为动态侧栏,通过register_sidebar(), 看起来是这样的:

register_sidebar( array(
\'name\'          => __( \'Sidebar name\', \'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>\' 
) ); 
现在,如果在主题中正确实现了这一点,那么通常会在回调中找到该函数,并将其连接到适当的操作中widgets_init:

function wpse140550_register_sidebars() {

    register_sidebar( array(
    \'name\'          => __( \'Sidebar name\', \'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\' );
所以,如果你知道\'id\' 在动态侧栏中,您可以使用配套功能取消注册:unregister_sidebar():

unregister_sidebar( \'unique-sidebar-id\' );
但此函数必须在调用register_sidebar() 呼叫已挂接。

在我们的“正确完成”示例中,我们知道操作是widgets_init:

function wpse140550_deregister_sidebar() {

    unregister_sidebar( \'unique-sidebar-id\' );

}
add_action( \'widgets_init\', \'wpse140550_deregister_sidebar\' );
现在,这应该可以正常工作,即使主题没有挂接到明确的动作中。主题functions.php 文件在(IIRC)执行plugins_loaded, 以前发生过的事widgets_init, 和widgets_init 是小部件功能实际发生的地方。

因此,您可以使用子主题或站点功能插件来删除动态侧栏。您主要需要了解其\'id\' 为了做到这一点。

SO网友:JorgeArtware

Yes<至少我可以在直接托管在wordpress上的网站上完成这项工作。com公司

说明:
删除位于该特定区域的所有小部件,它将自动折叠和隐藏。

完成。

Note: 这个答案不是针对OP,而是针对其他像我一样登陆这里的人

结束

相关推荐

Individual Widgets per Page

在我的Wordpress网站(仅限于页面,无帖子)中,我需要在侧边栏中放置一些静态blob。我们可以将这些“blob”称为小部件。至少他们会有一个固定的html内容,如“摘要1”、“摘要2”、“免责声明”、“foo策略”。。。我需要的是,在每一页上都有不同的安排。因此,这不仅仅是“单一”对“归档”,而是真正的“产品页面A”对“产品页面B”对“关于我们”对“服务条款”。。。我在考虑自定义元框,以便在单个编辑器页面上打开和关闭它们wp-admin/post.php?post=196&action=ed