Meet Make, your friendly small business site builder: Start making for free

Make 1.7 Beta 1

by Corey McKrill on March 30, 2016 / 7 comments

Make 1.7 is now in beta! This release has a lot of big under-the-hood changes, and we need your help with testing so we can make sure the update is as seamless as possible. Especially if you are using a child theme that makes any customizations involving PHP, we need your feedback!

As they say with WordPress core betas, this software is still in development, so we don’t recommend you run it on a production site.

The beta of the Make theme is available here.

The beta of the Make Plus plugin is available to Make Plus license holders. Find it in the Downloads section of your account.

Update: Make & Make Plus 1.7 have been released!

If you think you’ve found a bug, please create an issue on the Make GitHub repo, or send an email to support@thethemefoundry.com and note that you’re testing the beta.

What’s new

The focus of this release was improvements to theme settings and how they are presented in the Customizer.

Here’s a rundown of the front end and admin changes in Make 1.7:

  • Instant style previews in the Customizer
  • A new, improved interface for managing Social Icons
  • Color and typography settings for buttons
  • Support for the Custom Logo functionality introduced in WordPress 4.5
  • One-click migration of theme settings from the parent to the child (coming soon)

And in Make Plus 1.7:

  • A new, improved interface for Typekit
  • An improved interface for single post and page layout settings
  • An option to make the site header “sticky” (coming soon)
  • Style Kits and the Builder’s Quick Start templates feature have been removed

The biggest changes are actually behind the scenes. As Make has continued to evolve and grow in popularity, we’ve realized that we need to be more strategic in how we maintain code and build out new features.

Modular architecture

When we first built Make, most of the functionality was implemented the same way you see a lot of things in WordPress core: lots of procedural, global functions. This strategy keeps the code easy to follow and familiar to those who develop themes and plugins for WordPress. However, it also tends to lead to a couple of common coding pitfalls:

  • Big, complex functions that do too much and can’t be reused
  • A lot of small utility functions in the global public scope that may become dependencies for unintended purposes

What we’ve done in Make 1.7 is deprecate a lot of these global functions and encapsulate related functionality into “module” classes (Note, though, that we aren’t using namespaces, so Make is still compatible with the same minimum version of PHP as WordPress). This allows us to have smaller, more abstract functions that are kept to their intended scope, which makes our code DRYer, more flexible, and easier to test. This in turn lays a robust foundation for future enhancements to the theme and plugin.

Moving away from pluggable functions

The other thing we did when we first built Make was to make nearly all of the functions in the theme “pluggable”. This allows child themes and plugins to override an entire function by defining it before it gets defined in the theme. WordPress core also has pluggable functions, although it is no longer considered a best practice and they are no longer being added.

These pluggable functions in Make can cause problems, because they limit the effectiveness of improvements and iteration of the code. If a child theme overrides a function, we can no longer be sure that the function will return the expected value. If we change the logic within the parent function, the child theme’s version may still be using some or all of the outdated logic.

Many of Make’s pluggable functions are now deprecated in 1.7. In some cases we’ve added new action/filter hooks to maintain customizability.

A full list of deprecated functions is included at the end of this post.

Error reporting

WordPress has a class for handling errors, but it doesn’t have a very good way of surfacing these errors. Since Make 1.7 deprecates a lot of code, we needed a way to display the deprecation notices that would get the site administrator’s attention without disrupting or breaking the layout of the site for visitors.

What we came up with is a notification in the Admin Bar that only displays for logged in users who have the capability to install/change themes.

make-errors

Click on the notification, and an overlay will appear that displays the Make error messages and a backtrace to the location of the error in the code, when possible.

make-error-overlay

These notifications can also be turned off via a filter, but it is more advisable to fix the errors instead. ;)

New APIs

Moving to a modular architecture gave us the opportunity to expand the theme’s APIs to improve developers’ abilities to go further with their Make sites. We haven’t completed the documentation for these APIs yet, but here are a few example uses:

  • Settings: change default values, specify sanitize callbacks that automatically run when the setting value is retrieved.
  • Fonts: add your own web fonts and make them available in the list of font families in the Customizer.
  • Social Icons: change or add to the available icons in the site header/footer.

Deprecated functions

The following functions are deprecated. They will trigger a Make error if used or overridden in a child theme. If there is a direct replacement for the function, it will be called instead.

  • ttfmake_action_backcompat
  • ttfmake_add_customizations
  • ttfmake_admin_notice
  • ttfmake_all_font_choices
  • ttfmake_all_font_choices_js
  • ttfmake_backcompat_action
  • ttfmake_backcompat_filter
  • ttfmake_body_classes
  • ttfmake_builder_banner_css
  • ttfmake_builder_css
  • ttfmake_category_transient_flusher
  • ttfmake_check_package
  • ttfmake_choose_google_font_variants
  • ttfmake_content_width
  • ttfmake_convert_px_to_rem
  • ttfmake_css_background
  • ttfmake_css_color
  • ttfmake_css_fonts
  • ttfmake_css_layout
  • ttfmake_customizer_add_panels
  • ttfmake_customizer_add_section_options
  • ttfmake_customizer_add_sections
  • ttfmake_customizer_background
  • ttfmake_customizer_background_image_group_definitions
  • ttfmake_customizer_control_autoload
  • ttfmake_customizer_convert_theme_mods_filter
  • ttfmake_customizer_convert_theme_mods_values
  • ttfmake_customizer_define_background_images_sections
  • ttfmake_customizer_define_colorscheme_sections
  • ttfmake_customizer_define_contentlayout_sections
  • ttfmake_customizer_define_general_sections
  • ttfmake_customizer_define_typography_sections
  • ttfmake_customizer_get_key_conversions
  • ttfmake_customizer_get_panels
  • ttfmake_customizer_get_sections
  • ttfmake_customizer_init
  • ttfmake_customizer_layout_breadcrumb_group_definitions
  • ttfmake_customizer_layout_comment_count_group_definitions
  • ttfmake_customizer_layout_content_group_definitions
  • ttfmake_customizer_layout_featured_image_group_definitions
  • ttfmake_customizer_layout_post_author_group_definitions
  • ttfmake_customizer_layout_post_date_group_definitions
  • ttfmake_customizer_layout_post_meta_group_definitions
  • ttfmake_customizer_layout_region_group_definitions
  • ttfmake_customizer_navigation
  • ttfmake_customizer_preview_script
  • ttfmake_customizer_register_autoload
  • ttfmake_customizer_scripts
  • ttfmake_customizer_set_transport
  • ttfmake_customizer_set_up_theme_mod_conversions
  • ttfmake_customizer_sitetitletagline
  • ttfmake_customizer_staticfrontpage
  • ttfmake_customizer_stylekit
  • ttfmake_customizer_typography_group_definitions
  • ttfmake_cycle2_script_setup
  • ttfmake_edit_page_script
  • ttfmake_embed_container
  • ttfmake_excerpt_more
  • ttfmake_filter_backcompat
  • ttfmake_font_choices_placeholder
  • ttfmake_font_get_relative_sizes
  • ttfmake_formatting
  • ttfmake_formatting_init
  • ttfmake_frontend_builder_scripts
  • ttfmake_get_all_fonts
  • ttfmake_get_choices
  • ttfmake_get_css
  • ttfmake_get_default
  • ttfmake_get_font_property_option_keys
  • ttfmake_get_font_stack
  • ttfmake_get_gallery_slider
  • ttfmake_get_google_font_subsets
  • ttfmake_get_google_font_uri
  • ttfmake_get_google_fonts
  • ttfmake_get_logo
  • ttfmake_get_plus_link
  • ttfmake_get_relative_font_size
  • ttfmake_get_social_links
  • ttfmake_get_standard_fonts
  • ttfmake_get_view
  • ttfmake_has_sidebar
  • ttfmake_head_early
  • ttfmake_head_late
  • ttfmake_hex_to_rgb
  • ttfmake_is_plus
  • ttfmake_is_preview
  • ttfmake_jetpack_infinite_scroll_footer_callback
  • ttfmake_jetpack_infinite_scroll_has_footer_widgets
  • ttfmake_jetpack_infinite_scroll_render
  • ttfmake_jetpack_remove_sharing
  • ttfmake_jetpack_setup
  • ttfmake_load_textdomains
  • ttfmake_maybe_add_with_avatar_class
  • ttfmake_maybe_show_social_links
  • ttfmake_option_defaults
  • ttfmake_page_menu_args
  • ttfmake_parse_font_properties
  • ttfmake_parse_link_underline
  • ttfmake_plus_styles
  • ttfmake_plus_upgrade_notices
  • ttfmake_pre_wp_nav_menu_social
  • ttfmake_refresh_logo_cache
  • ttfmake_register_admin_notice
  • ttfmake_require_files
  • ttfmake_sanitize_choice
  • ttfmake_sanitize_float
  • ttfmake_sanitize_font_choice
  • ttfmake_sanitize_font_subset
  • ttfmake_sanitize_text
  • ttfmake_scripts
  • ttfmake_setup
  • ttfmake_sidebar_description
  • ttfmake_sidebar_list_enabled
  • ttfmake_upgrade_notices
  • ttfmake_widgets_init
  • ttfmake_woocommerce_after_main_content
  • ttfmake_woocommerce_before_main_content
  • ttfmake_woocommerce_init
  • ttfmake_wp_title
  • ttfmake_yoast_seo_breadcrumb
  • ttfmp_add_admin_notices
  • ttfmp_admin_notice
  • ttfmp_edd_add_color_css
  • ttfmp_edd_get_section_definitions
  • ttfmp_get_app
  • ttfmp_get_duplicator
  • ttfmp_get_edd
  • ttfmp_get_page_duplicator
  • ttfmp_get_perpage
  • ttfmp_get_perpage_metabox
  • ttfmp_get_perpage_options
  • ttfmp_get_post_list
  • ttfmp_get_quick_start
  • ttfmp_get_section_duplicator
  • ttfmp_get_shop_settings
  • ttfmp_get_shop_sidebar
  • ttfmp_get_sidebar_management
  • ttfmp_get_style_kits
  • ttfmp_get_template_collector
  • ttfmp_get_template_url
  • ttfmp_get_text_column_layout
  • ttfmp_get_typekit
  • ttfmp_get_typekit_customizer
  • ttfmp_get_widget_area
  • ttfmp_get_woocommerce
  • ttfmp_post_list_get_section_definitions
  • ttfmp_register_admin_notice
  • ttfmp_register_sidebar
  • ttfmp_register_template
  • ttfmp_sideload_image
  • ttfmp_style_kit_definitions
  • ttfmp_woocommerce_add_color_css
  • ttfmp_woocommerce_get_section_definitions
  • ttfmp_woocommerce_legacy_color
  • ttfmp_woocommerce_product_grid_shortcode
  • ttf_recursive_stripslashes

Deprecated action and filter hooks

The following hooks are deprecated, but will continue to work without disruption. They will still trigger a Make error, however, so their use should be discontinued.

Update: Some of the hooks that were previously listed under “no longer used” have been moved up to the “continue to work” list.

  • make_css
  • make_all_font_choices
  • make_all_fonts
  • make_font_variants
  • make_format_builder_format_models
  • make_get_default
  • make_get_google_fonts
  • make_get_standard_fonts
  • make_get_view
  • make_read_more_text
  • make_sanitize_choice
  • make_sanitize_font_choice
  • make_sanitize_font_subset
  • make_setting_choices
  • make_setting_defaults
  • make_supported_social_icons
  • ttfmake_builder_js_dependencies
  • ttfmake_custom_logo_information
  • ttfmake_custom_logo_max_width
  • ttfmp_color_highlight_description
  • ttfmp_perpage_keys
  • ttfmp_perpage_post_types
  • ttfmp_perpage_view
  • ttfmp_post_list_output
  • ttfmp_post_list_query_args
  • ttfmp_post_list_template_paths
  • ttfmp_shop_layout_product_description
  • ttfmp_shop_layout_shop_description
  • ttfmp_woocommerce_product_grid_output
  • ttfmp_woocommerce_product_grid_query_args

The following hooks are no longer used in the code. They will trigger a Make error, and functions added to the hooks will no longer be called.

  • make_css_font_properties
  • make_customizer_background_image_group_definitions
  • make_customizer_background_sections
  • make_customizer_colorscheme_sections
  • make_customizer_contentlayout_sections
  • make_customizer_header_sections
  • make_customizer_footer_sections
  • make_customizer_control_path
  • make_customizer_general_sections
  • make_customizer_typography_group_definitions
  • make_customizer_typography_sections
  • make_get_google_font_subsets
  • make_required_files
  • make_sidebar_list_enabled
  • make_social_links
  • ttfmp_perpage_allowed_keys
  • ttfmp_style_kit_allowed_option_keys
  • ttfmp_style_kit_definitions

7 Comments

  1. Carolyn McKinney

    Working on my very first Make site right now. I like some of the new things in 1.7 (like making the header sticky!) – is there an ETA on the full release?

  2. Melissa Hill

    Hey Carolyn, very, very soon! We just need to get some beta testing done first because of the bigger underlying changes we’ve made to the code first. :)

  3. Kyle Henderson

    Sweet! Now, will there be an off-canvas menu option?

  4. Thor

    Moving away from pluggable is a sad thing IMO. Make is (was?) for me a semi framework approach to us semi-developers :D I’ve always liked themes that used function_exists and similar approaches so I could easily define my own functions in child theme functions.php so I never had to mess with parent/core files.

  5. Alton Ng

    You mentioned Style Kits is going to be removed. I just discovered Make late last night and I thought that was one of the nicest features of Make. I am trying to build a collection of niche themes for my clients who can switch themes with out worrying the possibly of breaking the site. Can you comment on why it is being removed and will there be something to take its place or if there is a work around?

  6. Corey McKrill

    @Thor overriding pluggable functions is much more akin to “messing” with parent/core files because you’re actually changing the original logic of the function. And while your changes won’t be lost when you update the theme, you also won’t receive the benefit of any bug fixes or enhancements to the functions you’ve overridden. Most of Make’s functionality can still be modified simply by removing a function from a hook and then adding your own function in its place, or adding a function to a filter hook to modify the final output of something.

    There are examples in core and in Make of achieving similar levels of customization with hooks rather than pluggable functions.

Comments are closed.