Git Product home page Git Product logo

customify's Introduction

Customify Wordpress Theme Version Wordpress Plugin: Tested WP Version Wordpress Theme Active Installs License: GPL v3

The Most Customizable WordPress Theme

Customify is fast, lightweight, responsive and super flexible multipurpose theme built with SEO, speed, and usability in mind.

Unleash the power of your imagination with a true WYSIWYG Header & Footer builder (inside the WordPress Customizer) built exclusively for this theme. The theme works great with any of your favorite page builder like Elementor, Beaver Builder, SiteOrigin, Thrive Architect, Divi, Visual Composer, etc.

Customify Screenshot

Combined with the Header & Footer builder, you can build any type of website like shop, business agencies, corporate, portfolio, education, university portal, consulting, church, restaurant, medical and so on. Customify is compatible with all well-coded plugins, including major ones like WooCommerce, OrbitFox, Yoast, BuddyPress, bbPress, etc.

Learn more about the theme and ready to import demo sites at https://pressmaximum.com/customify/

Tags: custom-background custom-logo custom-menu custom-logo featured-images flexible-header footer-widgets full-width-template sticky-post theme-options threaded-comments translation-ready one-column two-columns three-columns left-sidebar right-sidebar e-commerce blog

Requirements

PHP: 5.6.2+

WordPress: 4.9.0+

Installation from within WordPress

  1. Visit "Appearance > Themes > Add New"
  2. Search for "Customify"
  3. Install and activate

Frequently Asked Questions

Is Customify Free?

Yes! Customify is a free theme, and always will be.

Does Customify have a pro version?

It does! Customify has a premium plugin which extends the available options in the theme. You can learn more about here.

Where can I find the documentation?

Customify has an extensive documentation. You can find it at https://pressmaximum.com/docs/customify/.

Do you offer support?

Definitely. We offer support for the free theme in the WordPress.org forums. Premium customers have access to our very own ticket. We try to answer all questions - free or premium - within 24 hours.

Where can I find the theme options?

All of our options can be found in the Customizer under 'Appearance > Customize'.

Does Customify have any widget areas?

Customify has up to 6 widget areas which you can add widgets to in Appearance > Widgets.

How can I make my site look like your screenshot?

If you want to replicate the screenshot you see on WordPress.org, please refer to this article.

Change log

We'll keep track of each release in the changelog.txt.

Copyright & Licensing

Customify WordPress Theme © 2018 PressMaximum.com/customify

Customify is distributed under the terms of the GNU GPL version 3 (see License)

Acknowledgements

Customify bundles the following third-party resources

Customify Sites Thumbnail Image, Theme Screenshot images from Pexels

License: https://www.pexels.com/photo-license/ (http://creativecommons.org/publicdomain/zero/1.0 - CC0)

assets/images/admin/sites_thumbnail.jpg https://www.pexels.com/photo/view-of-high-rise-buildings-during-day-time-302769/

assets/images/default_cover.jpg https://www.pexels.com/photo/architectural-design-architecture-buildings-city-374811/

Theme Screenshot

Other

customify's People

Contributors

boy8xnoname avatar congthien avatar dependabot[bot] avatar iandelmar avatar kientrong avatar shrimp2t avatar truongtuyen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

customify's Issues

Customify Panel

I wasn't sure what to make of the "Customify Panel" panel in the customizer and its single section and controls. It's not clear what this is for.

Quick Note:

  • It's just a note for you to remember. When you are submitting this theme in WordPress.org
  • Remove development version files like .gitignore, grunt or gulp files on final production version of theme.

No translatable content in string

On line 56 of inc/template-tags.php, there's no content to translate here:

printf( '<div class="tags-links">' . __( '%1$s', 'customify' ) . '</div>', $tags_list ); // WPCS: XSS OK.

That should simply be:

printf( '<div class="tags-links">%1$s</div>', $tags_list ); // WPCS: XSS OK.

Recommended: Separate classes into files

Throughout the theme, you've mixed PHP classes inside files with other classes and functions. It's standard practice to separate files like so:

  • Each class gets its own file. One class per file only.
  • Functions go within their own files. Multiple functions per file.
  • Logic code that executes upon file load shouldn't be mixed with functions or class definitions.

For example, in inc/customizer/customizer.php, you have all three of these ideas mixed together in a single file.

  • Multiple classes.
  • Multiple functions.
  • Loading files via require_once() upon file load.

In the long run, this is a maintenance nightmare.

Header builder improvement

  • Header Top, Main, Bottom Layout improve: Contained; Fullwidth Contained.
  • Header Top, Main, Bottom Height on all devices.
  • Change Background to Styling: Background Color, Background Image, Border (Border-width, Border color, Border style)

Licensing and copyright

You're missing the licensing and/or copyright for the following resources:

  • Font Awesome CSS (note this has a different license than the font)

Function prefix Issue

  • Spelling mistake on comtomify_metabox_init() in customify\inc\metabox.php line 6
  • Some inconsistencies with function prefixes. Some have Customify_ and some customify_, customify_ being the proper one for function prefix according to WordPress coding standards. Change Customify_ to customify_ in following:
    • inc\posts\post-builder.php post-builder.php line: 300
    • inc\customizer-layout-builder\init.php line 452 and 1005

Recommended: Separate customizer control classes

In your Customify_Customizer_Control class in inc/customizer/customizer-control.php, your class handles multiple types of fields. Ideally, those would be in separate classes of their own. Each class should handle its own code. If there's shared code between the classes, create a parent class and sub-class it.

Demo content shouldn't be shown to everyone

  • Demo content shouldn't be shown to everyone. Make sure to use the right capability [current_user_can](https://developer.wordpress.org/reference/functions/current_user_can/)() to ensure that only the right people will see those messages.
  • You need to make modification in file /inc/customizer-layout-builder/config/footer/widgets.php, function customify_builder_footer_widget_item()
  • Check in other sections as well.
  • read more at https://make.wordpress.org/themes/2016/03/31/what-is-demo-content/

Header builder + frontend.

  • Button
  • Icon List
  • Nav Icon
    ..

Button style group

  • Button Styling: Text Color, Background Color, Border xx
  • Button Styling on Hover: Text Color, Background Color, border xx

Don't internationalize HTML if possible

In template-parts/content.php and template-parts/content-page.php, you have this bit of code:

the_content( sprintf(
	wp_kses(
		/* translators: %s: Name of current post. Only visible to screen readers */
		__( 'Continue reading<span class="screen-reader-text"> "%s"</span>', 'customify' ),
		array(
			'span' => array(
			'class' => array(),
			),
		)
	),
	get_the_title()
) );

The <span> mixed into the text string is entirely unnecessary and is causing you to add a lot of unneeded code. It'd be far easier to use:

the_content(
        // Translators: %s: Name of current post. Only visible to screen readers.
        sprintf( esc_html__( 'Continue reading %s', 'customify' ), '<span class="screen-reader-text">' . the_title( '', '', false ) . '</span>' )
);

Also, note that I'm using the_title() rather than get_the_title() there so that all the right filters are applied.

Excerpt length and Excerpt more hooks

  • Make sure excerpt_length and excerpt_more hooks are not executed on admin side
    • customify/inc/posts/post-builder.php line 79 as :
    if ( ! is_admin() ) {
        $excerpt_length = apply_filters('excerpt_length', 55 );
    }
* Similar in line 81

Remove unused code

WordPress.org will ask that you remove any unused code. For example, there are 100s of lines of code in inc/customizer/customizer-config.php that are commented out. Those should be removed from your final copy.

Incorrect POT file

In /languages, you have a _beacon.pot file. Make sure that's updated and renamed to customify.pot.

Also, for WordPress.org, you are not required to have a POT file. It can be omitted and the WordPress.org language pack system will handle it.

Incorrect content width

  • in functions.php file, you have defined content_width as 640 in function content_width(). But when I check in with of your content in site, your default content width is 841
  • Then again you need to change the width as per your Content Layout.

Prefixing: Global JS variables

JS variables in the global namespace should be prefixed just like PHP names.

In assets/js/customizer/auto-css.js, the AutoCSS variable should be prefixed.

Design Issues: Footer Widgets

  • It's not so flexible to. I just added Widget in Footer Widget 1 and Footer Widget 2. But it's showing demo Footer Widget 1 and Footer Widget 2. It's not the good experience.
    footer-widgets
  • Then I check in settings to remove Footer Widget 3 and Footer Widget 4. Finally I was able to remove it. But then, there is spacing issue. Check out this screenshot
    footer-widget-spacing-issue

Recommended: PHP documentation standards

I always recommend this. You should take the time to follow the WP PHP documentation standards: https://make.wordpress.org/core/handbook/best-practices/inline-documentation-standards/php/

With any theme, especially a larger one like this with lots of PHP code, this will help maintain it in the future. It also helps those looking at your code understand it. This also helps us help you.

For example, I could pull a random method out like Customify_Customizer::get_config(). The code itself looks fine just looking over it. However, because there's no documentation on exactly what the method is supposed to do, I can't say that the code is 100% correct.

Author URI and Theme URI

  • Theme URI and Author URI should not be the same
  • Theme URI is optional. If used, it must be about the theme on WordPress.org
    Author URI is optional. If used it is required to link to an author’s personal website or project/development website.

Missing Domain Path

In your style.css header, you should add this line after Text Domain:

Domain Path: /languages

Builder item change

  1. Remove HTML 2 builder item in free version.
  2. Add "Secondary Menu" builder item

Escape following using esc_html()

  • inc\template-tags.php line 129 get_comment_date()
  • inc\customizer-layout-builder\config\footer\copyright.php line 79 Customify_Init::$theme_author

Improve popup settings.

  • Keep popup settings when click reset.
  • Group background settings.
  • Group box-shadow settings.

Invalid theme tag

  • front-page-posting is an invalid theme tag in styles.css Tags
  • Further, readme.md and styles.css has different tags

Registering multiple sidebars

When registering multiple sidebars with the same name (but numbered), such as with your footer sidebars, you should use the register_sidebars() function instead of registering them individually with register_sidebar().

For example, this will register 4 footer sidebars with the footer-1, footer-2, and so on IDs:

register_sidebars(
        4,
        array(
                'name'          => esc_html__( 'Footer Sidebar %d', 'customify' ),
                'id'            => 'footer',
                'description'       => esc_html__( 'Add widgets here.', 'customify' ),
                'before_widget' => '<section id="%1$s" class="widget %2$s">',
                'after_widget'  => '</section>',
                'before_title'  => '<h4 class="widget-title">',
                'after_title'   => '</h4>'
        )
);

A secondary benefit of that is that you have fewer text strings to translate.

Pluggable functions/classes

Throughout the theme, you have many function_exists() and class_exists() checks, which in effect make much of your code pluggable. This means it can be overwritten in a child theme.

While that may be desirable for something like template functions, I can't see the use of doing that for something like your Customify_Customizer class for example. I wouldn't be good practice to allow the entire class to be overwritten like that.

I recommend reviewing any pluggable functions/classes and making sure that there's a good use case for them being pluggable. If not, remove the conditional check.

Recommended: Architecture redesign

For the most part, this looks like a solid theme in terms of code. But, it's not poetic code (referring to WordPress' motto of "code is poetry"). This is really the only thing I'd spend a lot of time trying to improve -- writing more maintainable code. It's not something you need to address today. It's something you'll work on over time.

Good inline docs is a start to making better code: #55

When I'm looking over theme code, a red flag for me is often seeing a file that's over 15 kb in size. More often than not, this means the file needs to be broken down into separate files for better organization. I touched on this in #53, but I'm creating this larger ticket because this is more about the entire theme code than just classes.

Practical example of separating files

I'm going to give you a practical example of how I'd break down one of your large files. Let's use inc/customizer/customizer.php.

First, I'd put the 3 classes into their own files. Something like:

  • class-customify-wp-customize-panel.php
  • class-customify-wp-customize-section.php
  • class-customify-customizer.php.

Ideally, you'd use an autoloader to automatically load those (and any other classes) as needed.

Then, I'd separate all the functions into a file like:

  • functions-customizer.php

Then, all the require_once() file loading calls, I'd separate out into its own file or section of another file for just loading stuff. This should be a part of a bootstrap routine for the customizer somewhere.

The direct call to the Customify_Customizer() function should be a part of your customizer bootstrap routine too.

If you're interested in a really rough bootstrap method, feel free to check out one I'm currently building. It's unfinished at the moment (need to move the app() function to a separate file too) and not specific to the customizer, but it may give you some ideas: https://github.com/justintadlock/abc/blob/master/bootstrap/app.php

Arrays upon arrays

A lot of your customizer code is arrays on top of more arrays. It can't be easy to find stuff.

When I find myself in similar situations, I usually break a lot of the code out into its own function.

Design Issues: Title should not overflow the content area

  • Title should not overflow the content area

  • Non-breaking text in the title, content, and comments should have no adverse effects on layout or functionality.

  • Check this screenshot, where title and content is overflow and also featured image is hidden now.
    title-overflow-content-area

  • The following CSS properties will help you support non-breaking text.

-ms-word-wrap: break-word;
word-wrap: break-word;

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.