Blade - Responsive Multi-Functional Theme

Contents

1. Visual Composer cannot be auto updated (since version 4.9)

2. How to add custom fonts via Child Theme in Blade?

3. Recommended Server Settings - Memory issues

4. Instagram Feed since the 1st of June 2016

5. Why half my menu items just disappeared?

6. WP & Theme updates – Important!

7. Adding Custom JS Code via Child Theme

8. How to translate your logo with WPML

9. How to create 5-Columns layout via the Page Builder

10. Fonts not displayed correctly

11. How to disable animations in Feature section and Title areas in Blade

12. Add your own API key for the Google Maps

1. Visual Composer cannot be auto updated (since version 4.9)

This is a VC's bug. Basically, since we handle these updates you should not see this message. We have already informed the VC's team about this and they will provide a fix in the next release. Then you will need to remove and reinstall the new version as the auto update will not work because of this bug. So:

  1. Deactivate the Visual Composer
  2. Make the update while it is deactivated
  3. Activate again the VC and you will get the new version which is included in the theme

Notice that there is nothing to worry about this process, you are not going to lose your data :)

Important: There is no need to purchase a licence for the Visual Composer (for any of our themes) as it is included in our themes. Read this article.

2. How to add custom fonts via Child Theme in Blade?

Under Theme Options - Typography you can select a variety of Standard and Google Fonts.

In some cases you might need to use a Custom Font, we have implemented a solution to add your Custom Fonts and be able to select them in the Typography section of our options panel ( Theme Options - Typography ).

To use fonts in WordPress it's normally required to add some css code in your header. The remaining part is to be able to select it from the Font Family combo boxes.

Of course you can also add refined css code under Theme Options - CSS/JS Options - CSS Code.

Web fonts are provided in various formats:

Usually some documentation is already provided when you purchase a custom Font. A sample css is normally included in the documentation.

As an example we'll use a font called: MyCustomFont and a dummy site URL.

You need to replace them with the actual Font Family name and your site URL. In this example fonts are uploaded in a folder webfonts inside you WordPress uploads directory.

Add the following snippet in the functions.php file of your Child Theme.

function grve_child_theme_print_custom_fonts() {
?>
<style type="text/css">
    @font-face {
        font-family: 'MyCustomFont';
        src: url('http://www.yourdomainname.xxx/wp-content/uploads/webfonts/MyCustomFont.eot');
        src: url('http://www.yourdomainname.xxx/wp-content/uploads/webfonts/MyCustomFont.eot?#iefix') format('embedded-opentype'),
        url('http://www.yourdomainname.xxx/wp-content/uploads/webfonts/MyCustomFont.woff2') format('woff2'),
        url('http://www.yourdomainname.xxx/wp-content/uploads/webfonts/MyCustomFont.woff') format('woff'),
        url('http://www.yourdomainname.xxx/wp-content/uploads/webfonts/MyCustomFont.ttf') format('truetype'),
        url('http://www.yourdomainname.xxx/wp-content/uploads/webfonts/MyCustomFont.svg#wf') format('svg');
    }
</style>
<?php
}
add_action( 'wp_head', 'grve_child_theme_print_custom_fonts' );

function grve_child_theme_custom_font_selection( $std_fonts ) {
    $my_custom_fonts = array(
        "MyCustomFont"    => "MyCustomFont",            
    );
    return array_merge($std_fonts, $my_custom_fonts);
}
add_filter( 'blade_grve_std_fonts', 'grve_child_theme_custom_font_selection' );

The first function adds CSS and the second adds the fonts to the Font Family selectors.

In $my_custom_fonts array you can also add additional fonts. Your custom Fonts will be added as Standard Fonts in all Font Family selectors under: Theme Options - Typography Options.

This way you can add as many custom fonts as you like.

3. Recommended Server Settings - Memory issues

There are hundreds of thousands of web hosts out there, not all of them are fit for a WordPress installation. There are a few (well-known) low budget host providers that you can experience multiple issues when you use a premium, high quality theme (demo import issues, images upload etc). As you can easily understand this is out the scope of our support and something that you need to sort out with your host provider. At least, make sure you have covered the basics: WordPress Minimum Requirements

Recommended PHP and MySQL versions:

Themes and Plugins often require more memory than the server default values. In some server installations some php variables are very low and not recommended for WordPress installations with premium Themes or/and multiple Plugins.

Recommended php variable values:

Snippet for php.ini

    memory_limit = 256M 
    post_max_size = 128M 
    upload_max_filesize = 32M  
    max_input_vars = 3000
    max_execution_time = 300

Snippet for .htaccess

  php_value memory_limit 256M
  php_value post_max_size 128M
  php_value upload_max_filesize 32M
  php_value max_input_vars 3000
  php_value max_execution_time 300

Note: If you have already a larger number or if you don't have any issues, you don't need to modify them.

Keep in mind that some values must be larger than others: memory_limit > post_max_size > upload_max_filesize

These values can be changed with the following methods:

One of the most important files in your WordPress installation is the wp-config.php file. This file is located in the root of your WordPress file directory and contains your website's base configuration details, such as database connection information.

WP_MEMORY_LIMIT option allows you to specify the maximum amount of memory that can be consumed by PHP. This setting may be necessary in the event you receive a message such as "Allowed memory size of xxxxxx bytes exhausted".

This setting increases PHP Memory only for WordPress, not other applications. By default, WordPress will attempt to increase memory allocated to PHP to 40MB. Increasing memory allocated to PHP

Increase PHP Memory to 96M

define( 'WP_MEMORY_LIMIT', '96M' );

Administration tasks require much memory than usual operation. When in the administration area, the memory can be increased or decreased from the WP_MEMORY_LIMIT by defining WP_MAX_MEMORY_LIMIT.

define( 'WP_MAX_MEMORY_LIMIT', '256M' );

Please note, this has to be put before wp-settings.php inclusion.

4. Instagram Feed since the 1st of June 2016

Since the 1st of June 2016 and according to the new Instagram API rules our access token was cancelled. You can either create your own access token or leave the fields Access Token and the User ID empty to make it work again.

Notice that you need (at least) the version 2.2.3 of Blade theme and the version 3.2.4 of Osmosis theme.

5. Why half my menu items just disappeared?

There is a well known limitation in WordPress, because of max_input_vars that was introduced in PHP 5.3.9.

For security reasons, PHP limits the maximum numbers of POST variables you can submit.

Specifically for a WordPress Menu

Normally if your server has default settings the max_input_vars value is 1000 so approximately only the first 80 menu items are sent to the server, due to the new POST variable limit.

If you don't really need many menu items then you don't have to do any additional settings. Otherwise you need to properly configure your php settings and change the maximum number of input vars to a larger value e.g: 2000.

In case the Header Menu looks scrabbled, the only reason is that the Header Menu is unset in Theme Locations.

You can set it again under Appearance - Menus - Menu Settings

  1. Check Header Menu
  2. Save menu

Additional Info

If you need additional information then you can read the following article:

http://sevenspark.com/wordpress/menu-item-limit


6. WP & Theme updates – Important!

When a major WP release arises it is crucial not to update WP version unless you are 100% sure that our Theme is compatible at that particular time. Proper order of update is Theme first, WP later.

It is very important to stay always updated in both Theme & related plugins. Proper way of updating Theme & related plugins can be found here:

You could frequently check the changelog of our Themes in the following links:

In that way you can always be sure that your site will always work flawlessly.

7. Adding Custom JS Code via Child Theme

Sometimes a script is too complicated and needs additional php conditions or other custom code.

In case you want to use your own custom javascript code without the use of the integrated javascript editor from Theme Options, you could use the default WordPress hooks with your own function via a Child Theme.

This way you can combine javascript and php code.

Depending on the hook you can add your code either after the head tag or just below the closing body tag.

For example you could add a function like:

function grve_child_theme_print_custom_code() {
?>
    <!-- Your custom Code -->
<?php
}

And use either the wp_head hook for header ( head tag )

add_action( 'wp_head', 'grve_child_theme_print_custom_code' );

or the wp_footer hook for footer( just before end body tag )

add_action( 'wp_footer', 'grve_child_theme_print_custom_code' );

8. How to translate your logo with WPML

You can easily translate your logo via the String translation if you use the following procedure:

9. How to create 5-Columns layout via the Page Builder

WPBakery Page Builder does not support 1/5 column currently. They might implement it in next releases though. When they do that we'll also adapt our code to be compatible with the Builder.

An easy trick to simulate 5 columns with the current grid is to select Custom and add a row with the following custom row configuration:

1/12 + 1/6 + 1/6 + 1/6 + 1/6 + 1/6 + 1/12

Obviously, leave the first and last 1/12 columns empty. On mobiles, you can return to full width and hide the 1/12 columns.

10. Fonts not displayed correctly

If you serve fonts files from different domains, fonts might not displayed correctly due to Cross-origin resource sharing (CORS). More info about CORS here: https://en.wikipedia.org/wiki/Cross-origin_resource_sharing

Chrome, Firefox and newer versions of Internet Explorer enforce the Cross-Origin Resource Sharing standard, and thus only render web fonts served with the appropriate “Access-Control-Allow-Origin” response header.

For example if you have more than one domain/sub-domain to show your site, fonts might not be displayed correctly in your other domains/sub-domains. This might affect Font Icons like Awesome Fonts or custom fonts hosted from your server.

Use-case:
http://www.sampledomain.com ( fonts shown correctly )
http://subdomain.sampledomain.com ( fonts not shown correctly )

To solve this issue you need to set the appropriate “Access-Control-Allow-Origin” response header.

You can modify your .htaccess file to allow fonts from another domain.

<FilesMatch "\.(ttf|otf|eot|woff|woff2)$">
    <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "http://subdomain.sampledomain.com"
    </IfModule>
</FilesMatch>

or allow fonts from all domains ( in case you have more than one domain that is mapped to your site )

<FilesMatch "\.(ttf|otf|eot|woff|woff2)$">
    <IfModule mod_headers.c>
        Header set Access-Control-Allow-Origin "*"
    </IfModule>
</FilesMatch>

Depending on the server similar code must be configured ( e.g: for IIS7 or nginx )

More info here: http://enable-cors.org/server.html

11. How to disable animations in Feature section and Title areas in Blade

In order to disable the css animation in the Feature section and/or the Page in Blade Theme you could try the following css code under Appearance > Theme Options > CSS/JS > Options:

.grve-page-title .grve-graphic,
#grve-feature-section .grve-graphic,
.grve-page-title .grve-subheading,
#grve-feature-section .grve-subheading,
.grve-page-title .grve-title,
#grve-feature-section .grve-title,
.grve-page-title .grve-description,
#grve-feature-section .grve-description,
.grve-page-title .grve-btn,
#grve-feature-section .grve-btn {
    opacity: 1;
    -webkit-animation-duration : 0s;
    -moz-animation-duration    : 0s;
    -o-animation-duration      : 0s;
    animation-duration         : 0s;
}
.grve-page-title .grve-bg-image,
#grve-feature-section .grve-bg-image {
    opacity: 1;
}
.grve-page-title .grve-content,
#grve-feature-section .grve-content {
    opacity: 1;
}
.grve-page-title .grve-spinner,
#grve-feature-section .grve-spinner {
    display: none;
}





12. Add your own API key for the Google Maps

In some case it is needed a different API key for the Google maps. 

So please:

1. Generate an API key from here https://developers.google.com/maps/documentation/javascript/get-api-key 

2. Place your API key in the related field in Theme Options > Map Options.



Alternative solution with the child theme

1. Generate an API key from here https://developers.google.com/maps/documentation/javascript/get-api-key 

2. Use the child theme to add one of the following functions according to the theme you are using:

//Blade Theme
function grve_child_map_scripts() {
 wp_register_script( 'blade-grve-googleapi-script', '//maps.googleapis.com/maps/api/js?key=API-KEY', NULL, NULL, true );
}
add_action( 'wp_enqueue_scripts', 'grve_child_map_scripts' );
//Osmosis - Reload
function grve_child_map_scripts() {
 wp_register_script( 'grve-googleapi-script', '//maps.googleapis.com/maps/api/js?key=API-KEY', NULL, NULL, true );
}
add_action( 'wp_enqueue_scripts', 'grve_child_map_scripts' );

3. Place your API key in the API-KEY space you see in the function.