10+ Really Useful WordPress Functions

Functions…

Functions play a big part in how your WordPress theme works as its performs as a plugin would.

You can add code snippets to improve the functionality and features of your site, you can add your own functions, call PHP functions or hook into a WordPress function.

It really is a useful file and here is some of my most used WordPress snippets to help me solve problems I face from time to time.

I know that many people would say that there are plugins to do these functions, Yes there are, but less is more, if its only 8 lines of code that you can easily paste in the functions file then why use a plugin.

So lets begin.


Add 3 custom sidebars

Adds 3 custom sidebar for you to use in the widget section of WordPress. simply remove / add as many as you need. (register_sidebar codex)

<?php
function custom_sidebar_function() {
    register_sidebar(
        array (
            'name' => __( 'Custom Sidebar 1', 'text-domain' ),
            'id' => 'custom-sidebar-widget1',
            'description' => __( 'Custom Sidebar 1', 'text-domain' ),
            'before_widget' => '
', 'after_widget' => "
", 'before_title' => '

', 'after_title' => '

', ) ); register_sidebar( array ( 'name' => __( 'Custom Sidebar 2', 'text-domain' ), 'id' => 'custom-sidebar-widget2', 'description' => __( 'Custom Sidebar 2', 'text-domain' ), 'before_widget' => '
', 'after_widget' => "
", 'before_title' => '

', 'after_title' => '

', ) ); register_sidebar( array ( 'name' => __( 'Custom Sidebar 3', 'text-domain' ), 'id' => 'custom-sidebar-widget3', 'description' => __( 'Custom Sidebar 3', 'text-domain' ), 'before_widget' => '
', 'after_widget' => "
", 'before_title' => '

', 'after_title' => '

', ) ); } add_action( 'widgets_init', 'custom_sidebar_function' ); ?>

Add a custom menu

Adds a custom menu to wordpress which you can then use in your widgets. (register_nav_menu codex)

<?php
add_action( 'init', 'register_custom_menu' );

function register_custom_menu() {
  register_nav_menu('custom-menu',__( 'Custom Menu' ));
}
?>

Add a settings page

Adds a settings page to the settings panel in WordPress with a textbox setting to get you started. (add_submenu_page codex) (Options Menu Video Tutorial) (Settings Video Tutorial)

<?php

//myTheme ADMIN MENU
add_action('admin_menu', 'myTheme_menu'); 

function myTheme_menu() {
 add_submenu_page(
		'options-general.php', 
		'myTheme Settings',
		'myTheme Settings', 
		'edit_posts', 
		basename(__FILE__), 
		'coupon_settingspage'
	);

	add_action( 'admin_init', 'myTheme_settings');
}

//myTheme REGISTER SETTINGS
function myTheme_settings() {
 register_setting( 'myTheme-sgroup', 'textBox' );
 }

//myTheme SETTINGS PAGE
function myTheme_settingspage() {
 
 if (!current_user_can('manage_options')) {
 wp_die( __('You do not have sufficient privileges to access this page.') );
 }
 
 $textBox = esc_attr( get_option('textBox') );

 ?>
 
 <div class="wrap">
 <?php settings_errors(); ?>
 <form method="post" action="options.php">
 <?php settings_fields( 'myTheme-sgroup' ); ?>
 
 <?php do_settings_sections( 'myTheme-sgroup' ); ?>
 
 <input type="text" id="textBox" name="textBox" value="<?php echo $textBox; ?>">
 
 <?php submit_button(); ?>
 </form>
 </div>
 
<?php }

Add custom CSS & JS scripts to the header or footer

Remember to create a main.css file and scripts.js file in your theme directory and update the directory paths. (wp_enqueue_style codex) (Video Tutorial)

<?php
function add_theme_styles() {
  wp_enqueue_style( 'custom-styles', get_stylesheet_directory_uri() . '/assets/css/main.css',array(),null,'all');
}
function add_theme_scripts() {
  wp_enqueue_script( 'custom-script', get_stylesheet_directory_uri() . '/assets/js/min/scripts-min.js',array('jquery'), null, true);
}

add_action('wp_enqueue_scripts', 'add_theme_styles');
add_action('wp_enqueue_scripts', 'add_theme_scripts');
?>

Add google analytics to header

Add that precious tracking code to the header of your site with ease.  (wp_head codex)

<?php
add_action('wp_head', 'add_google_analytics');
function add_google_analytics() { ??>
// Paste your Google Analytics code here
<?php } ??>

Add a custom shortcode

Add a custom shortcode to do what you want with the one below shows a h1 title and a h3 subtitle. (add_shortcode codex) (Video Tutorial)

<?php
// [myshortcode title="My Title" subtitle="My Subtitle"]
function shortcode_func( $atts ) {
    $a = shortcode_atts( array(
        'title' => 'something',
        'subtitle' => 'something else',
    ), $atts );

  $message = '<h1>' . $a['title'] . '</h1>';
  $message .= '<h3>' . $a['subtitle'] . '</h3>';

    return $message;
}
add_shortcode( 'myshortcode', 'shortcode_func' );
?>

Remove orphan words

Puts a space between the second to last word so no paragraph ends with one word on a new line, not really a function more JavaScript but still useful

<?php
add_action('wp_footer', 'add_orphan_script');
function add_orphan_script() { ?>

<script type="text/javascript">
  jQuery(function($){
    $(document).ready(function(){
      $('p').each(function(){var string = $(this).html();string = string.replace(/ ([^ ]*)$/,' $1');$(this).html(string);});
    });
  });
</script>

<?php } ?>

Echo theme / child / plugin directory

Useful when your enqueueing scripts or when your referencing an image in your theme directory.

Theme / Child Directory – /wp-content/themes/myTheme

<?php echo get_stylesheet_directory_uri(); ?>

Plugin Directory – /wp-content/plugins/

<?php echo plugins_url( '/assets/css/main.css', __FILE__ ); ?>

Conditional header tag.

Show something on one page but not the others? run scripts on the home page? make a certain page a different colour?

All can be achieved with conditional tags, they are used to do exactly that, run a specific piece of code on a specific post or page.

<?php
add_action('wp_head', 'conditional_tags');
function conditional_tags() { 

    if ( is_front_page() && is_home() ) { ?>
    //FRONT PAGE CSS
    <?php
    } elseif ( is_front_page() ) {
    // static homepage
    } elseif ( is_home() ) {
    // blog page
    } elseif ( is_page(PAGE ID) ) {
    // a page
    } elseif ( is_post(POST ID) ) {
    // a post
    }

} ?>

Add no follow to all external links

For SEO useful if you want to make sure Robots stay on your site and dont drift off somewhere you dont want them to go.

<?php
add_action('wp_footer', 'add_orphan_script');
function add_orphan_script() { ?>

<script type="text/javascript">
  
jQuery(function($){$( 'a' ).each(function() {
    if( location.hostname === this.hostname || !this.hostname.length ) {
      
    } else {
       $(this).attr('rel','nofollow');
    }
});

</script>

<?php } ?>

Echo Yoast Description & Keyword

For SEO echo the contents of the Yoast meta boxes on the post or page, using the below snippets.

Will Require a bit of PHP knowledge

Echo Focus Keyword

<?php echo get_post_meta(get_the_ID(), '_yoast_wpseo_focuskw', true); ?>

Echo Meta Description

<?php echo get_post_meta(get_the_ID(), '_yoast_wpseo_metadesc', true); ?>

If you have any problems or questions please let me know in the comments and I will happily assist.