Can I remove a widget area without editing code?

No, is not possible, not in 99% of cases.

Widget areas are added with a register_sidebar call in a php file. Until WordPress read that line, the widget area is registered.

So, the the easiest and always available way to prevent a widget area is registered is remove (or at least comment out) that line.

If the widget area is registered inside a theme function, and this function is wrapped inside a if ( ! function_exists ), example:

if ( ! function_exists('register_theme_stuff') ) {

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

}

then you can create a child theme and replace the function and not register the widget area, but that’s to write code, isn’t it?

Another way to prevent widget areas to be registered is when developer has used callback and a proper hook, example

add_action( 'widget_init', 'my_register_widgets' );

then you can use remove_action to remove it and prevent widget registering:

remove_action( 'widget_init', 'my_register_widgets' );

To be sure the action is removed call remove_action after the action is added. if the add_action is inside functions.php not wrapped in any hook, then use remove_action wrapped inside a after_setup_theme action callback. Read here about add_action and remove_action.

Another possibility is developer register the sidebar without using a proper hook, just roughly calling register_sidebar in functions.php:

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

In this case you can remove it using unregister_sidebar right after the sidebar is registered, 'after_setup_theme', that is fired after functions.php is included, will be perfect for the scope:

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

The 1% when widget areas can be disabled without using code, is when theme/plugin developer has added an option to register the sidebar.

Example:

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

If the code looks like this, then probably there is some setting UI that let you disable widget areas, but if the developer not provided that option to allow/disallow sidebar registering than only option is edit code.


PS don’t take 99% / 1% statistics as serious…