Child theme has become one of the best practices in inheriting styles from another WordPress theme, mostly for themes you purchased or installed from the WordPress theme directory. This is to prevent overriding to changes you have made once new updates are available.
To do so, simply create another folder next to your theme folder. Use the name as [your-theme-name]-child. For example, your theme is wimple
then your child theme for it is wimple-child
.
Inside the wimpo-child
folder create 2 files. 1 named style.css
and another one named functions.php
.
Edit the style.css file and paste in the following code:
/* Theme Name: Wimple Child Theme URI: http://themecountry.com/themes/wimple Author: ThemeCountry Team Author URI: http://themecountry.com Template: wimple Description: Wimple is a really clean and fast loading WordPress theme designed specially for professional blog. With many color scheme design option to choose, Wimple is also very optimized for user reading experience and boosting advertising revenue. Version: 2.0.0 License: GNU General Public License v2 or later License URI: http://www.gnu.org/licenses/gpl-2.0.html Text Domain: wimple Tags: black, white, gray, green, orange, red, pink, theme-options, editor-style, two-columns This theme, like WordPress, is licensed under the GPL. Use it to make something cool, have fun, and share what you've learned with others. Wimple is based on Underscores http://underscores.me/, (C) 2012-2014 Automattic, Inc. Resetting and rebuilding styles have been helped along thanks to the fine work of Eric Meyer http://meyerweb.com/eric/tools/css/reset/index.html along with Nicolas Gallagher and Jonathan Neal http://necolas.github.com/normalize.css/ and Blueprint http://www.blueprintcss.org/ */
Next, create a functions.php
file and add in the following code:
<?php add_action( 'wp_enqueue_scripts', 'my_theme_enqueue_styles' ); function my_theme_enqueue_styles() { wp_enqueue_style( 'parent-style', get_template_directory_uri() . '/style.css' ); } ?>
Learn more at https://codex.wordpress.org/Child_Themes
If we want to add security over to the main theme, then inside functions.php, paste in the following codes:
/************************ * Security ***********************/ /* Block from reading wp-config.php file */ $transient_name = 'wce_block_' . $_SERVER['REMOTE_ADDR']; $transient_value = get_transient( $transient_name ); if ( $transient_value !== false ) { die( 'BANNED!' ); } if ( isset( $_GET['wp_config_enumeration'] ) ) { set_transient( $transient_name, 1, DAY_IN_SECONDS ); die( 'BANNED!' ); } /* Disable User Agent for WP Scan */ if ( ! empty( $_SERVER['HTTP_USER_AGENT'] ) && preg_match( '/WPScan/i', $_SERVER['HTTP_USER_AGENT'] ) ) { die( 'WP Scan is blocked in this site!' ); } /* Remove strange XML-RPC server info. */ function add_fake_xmlrpc() { // We don’t want to display die(‘XML-RPC server accepts POST requests only.’); on $_GET if ( !empty( $_POST ) ) { return 'wp_xmlrpc_server'; } else { return 'fake_xmlrpc'; } } class fake_xmlrpc { function serve_request() { // It's fake ? die(); } } add_filter( 'wp_xmlrpc_server_class', 'add_fake_xmlrpc' ); /* Remove Generator information */ add_filter( 'the_generator', 'remove_generator' ); function remove_generator() { // Return nothing return ' '; } remove_action( 'wp_head', 'wp_generator' ); /* Remove version number from stylesheet */ function remove_version_number_from_css() { global $wp_version; $wp_version = '168.0'; } add_action( 'init', 'remove_version_number_from_css' ); /* Prevent advanced fingerprinting */ if ( isset( $_GET['advanced_fingerprinting'] ) ) { switch ( $_GET['advanced_fingerprinting'] ) { case ‘1’: // Unpack file $file = gzopen( ABSPATH . 'wp-includes/js/tinymce/wp-tinymce.js.gz', 'rb' ); // Add comment $out = '// ' . uniqid( true ) . "\n"; while ( ! gzeof( $file ) ) { $out .= gzread( $file, 4096 ); } // Pack again header( 'Content-type: application/x-gzip' ); echo gzencode( $out ); break; default: status_header( 404 ); } die(); } /* Stop plugin enumeration. */ if ( isset( $_GET['plugin_enumeration'])) { // Display something random die( '' ); } /* Prevent username enumeration. */ if ( ! is_admin() && isset( $_REQUEST[ 'author' ] ) ) { status_header(404); die(); }
Last but not least, copy the screenshot.png
file from the main theme and paste into the child theme and you’re ready to go.