Skip to content

Instantly share code, notes, and snippets.

@nathaningram
Last active April 2, 2022 20:09
Show Gist options
  • Select an option

  • Save nathaningram/9aed4953a20dffc9692fac7265f1245f to your computer and use it in GitHub Desktop.

Select an option

Save nathaningram/9aed4953a20dffc9692fac7265f1245f to your computer and use it in GitHub Desktop.
Kadence Starter Site 2021 Custom Functions Plugin
<?php
/*
Plugin Name: My Awesome Custom Functions Plugin
Plugin URI: https://nathaningram.com
Description: A set of custom functions for client websites from Nathan Ingram's Page Builder Developer Course Nov 2020
Version: 1.0
Author: Nathan Ingram
Author URI: https://nathaningram.com
License: GPL2
*/
/////////////////// WORDPRESS CORE RELATED FUNCTIONS ///////////////////
// Disable Auto Update Emails for Themes and Plugins
add_filter( 'auto_plugin_update_send_email', '__return_false' );
add_filter( 'auto_theme_update_send_email', '__return_false' );
// Disable Post Formats
add_action ('after_setup_theme','ni_no_mo_po_fo',100);
function ni_no_mo_po_fo () {
remove_theme_support( 'post-formats' );
}
// Disable Emojis
function ni_disable_emojis() {
remove_action( 'wp_head', 'print_emoji_detection_script', 7 );
remove_action( 'admin_print_scripts', 'print_emoji_detection_script' );
remove_action( 'wp_print_styles', 'print_emoji_styles' );
remove_action( 'admin_print_styles', 'print_emoji_styles' );
remove_filter( 'the_content_feed', 'wp_staticize_emoji' );
remove_filter( 'comment_text_rss', 'wp_staticize_emoji' );
remove_filter( 'wp_mail', 'wp_staticize_emoji_for_email' );
add_filter( 'tiny_mce_plugins', 'ni_disable_emojis_tinymce' );
add_filter( 'wp_resource_hints', 'ni_disable_emojis_remove_dns_prefetch', 10, 2 );
}
add_action( 'init', 'ni_disable_emojis' );
function ni_disable_emojis_tinymce( $plugins ) {
if ( is_array( $plugins ) ) {
return array_diff( $plugins, array( 'wpemoji' ) );
} else {
return array();
}
}
function ni_disable_emojis_remove_dns_prefetch( $urls, $relation_type ) {
if ( 'dns-prefetch' == $relation_type ) {
$emoji_svg_url = apply_filters( 'emoji_svg_url', 'https://s.w.org/images/core/emoji/2/svg/' );
$urls = array_diff( $urls, array( $emoji_svg_url ) );
}
return $urls;
}
//Remove Gutenberg Block Library CSS from loading on the frontend
function ni_remove_wp_block_library_css(){
wp_dequeue_style( 'wp-block-library' );
wp_dequeue_style( 'wp-block-library-theme' );
wp_dequeue_style( 'wc-block-style' ); // Remove WooCommerce block CSS
}
add_action( 'wp_enqueue_scripts', 'ni_remove_wp_block_library_css', 100 );
// Disables feeds
function ni_clean_feeds() {
// Redirects all feeds to home page.
$url = site_url();
wp_redirect( $url );
}
add_action( 'do_feed', 'ni_clean_feeds', 1 );
add_action( 'do_feed_rdf', 'ni_clean_feeds', 1 );
add_action( 'do_feed_rss', 'ni_clean_feeds', 1 );
add_action( 'do_feed_rss2', 'ni_clean_feeds', 1 );
add_action( 'do_feed_atom', 'ni_clean_feeds', 1 );
add_action( 'do_feed_rss2_comments', 'ni_clean_feeds', 1 );
add_action( 'do_feed_atom_comments', 'dni_clean_feeds', 1 );
// Clean Up WP_Head
remove_action( 'wp_head', 'wp_generator' ); // Removes WordPress version.
remove_action( 'wp_head', 'wp_shortlink_wp_head', 10, 0 ); // Removes shortlink.
remove_action( 'wp_head', 'rsd_link' ); // Removes Really Simple Discovery link.
remove_action( 'wp_head', 'feed_links', 2 ); // Removes RSS feed links.
remove_action( 'wp_head', 'feed_links_extra', 3 ); // Removes all extra RSS feed links.
remove_action( 'wp_head', 'wlwmanifest_link' ); // Removes wlwmanifest.xml.
remove_action( 'wp_head', 'wp_resource_hints', 2 ); // Removes meta rel=dns-prefetch href=//s.w.org
remove_action( 'wp_head', 'adjacent_posts_rel_link_wp_head', 10, 0 ); // Removes relational links for the posts.
remove_action( 'wp_head', 'wp_oembed_add_discovery_links', 10 ); // Removes oEmbeds.
// Disable Post by Email at Settings > Writing
add_filter( 'enable_post_by_email_configuration', '__return_false', 100 );
/////////////////// UNSET CORE IMAGE SIZES ///////////////////
add_filter( 'intermediate_image_sizes_advanced', 'ni_remove_default_image_sizes' );
// Source quadlayers.com/remove-wordpress-default-image-sizes/
function ni_remove_default_image_sizes( $sizes ) {
unset($sizes['medium_large']); // disable medium-large size
unset($sizes['1536x1536']); // disable 2x medium-large size
unset($sizes['2048x2048']); // disable 2x large size
return $sizes;
}
// Disable New User Reg Emails to Admin
//From Disable User Registration Notification Emails by Potent Plugins
add_action('init', 'pp_durne_init');
function pp_durne_init() {
remove_action('register_new_user', 'wp_send_new_user_notifications');
remove_action('edit_user_created_user', 'wp_send_new_user_notifications', 10, 2);
add_action('register_new_user', 'pp_durne_send_notification');
add_action('edit_user_created_user', 'pp_durne_send_notification', 10, 2);
}
function pp_durne_send_notification($userId, $to='both') {
if (empty($to) || $to == 'admin') {
return;
}
wp_send_new_user_notifications($userId, 'user');
}
if ( ! function_exists( 'wp_password_change_notification' ) ) {
function wp_password_change_notification( $user ) {
return;
}
}
/////////////////// WP-ADMIN CUSTOMIZATIONS ///////////////////
// Replace Howdy
function ni_replace_howdy( $wp_admin_bar ) {
$my_account=$wp_admin_bar->get_node('my-account');
$newtitle = str_replace( 'Howdy,', 'Greetings,', $my_account->title );
$wp_admin_bar->add_node( array(
'id' => 'my-account',
'title' => $newtitle,
) );
}
add_filter( 'admin_bar_menu', 'ni_replace_howdy',25 );
// Remove WP Dashboard Menu
function ni_admin_bar_remove() {
global $wp_admin_bar;
$wp_admin_bar->remove_menu('wp-logo');
}
add_action('wp_before_admin_bar_render', 'ni_admin_bar_remove', 0);
// Modify the thank you footer text
add_filter('admin_footer_text', 'ni_modify_footer_admin');
function ni_modify_footer_admin () {
echo '<div style="float:left;margin-right:8px;""><img src="//nathaningram-archive.s3.amazonaws.com/icons/brilliant-logo-32px.png"></div><div style="height:8px;">&nbsp;</div><span><a href="https://brilliantly.net" target="_blank" style="color:#555d66;text-decoration:none;font-weight:bold;">Brilliant Web Works</a> &ndash; Custom WordPress Management System</span>';
}
// Remove Dashboard Widgets
function ni_remove_dashboard_widgets() {
global $wp_meta_boxes;
// Activity Widget
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_activity']);
// At a Glance Widget
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_right_now']);
// Quick Draft Widget
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_quick_press']);
// News Widget
unset($wp_meta_boxes['dashboard']['side']['core']['dashboard_primary']) ;
//Site Health
unset($wp_meta_boxes['dashboard']['normal']['core']['dashboard_site_health']);
//Events Calendar
unset( $wp_meta_boxes['dashboard']['normal']['core']['tribe_dashboard_widget'] );
//WooSetup
unset( $wp_meta_boxes['dashboard']['normal']['high']['wc_admin_dashboard_setup'] );
//Welcome Panel
remove_action('welcome_panel', 'wp_welcome_panel');
}
add_action('wp_dashboard_setup', 'ni_remove_dashboard_widgets',11);
// Disable Site Health Admin Menu
function ni_remove_site_health_menu() {
remove_submenu_page( 'tools.php', 'site-health.php' );
}
add_action( 'admin_menu', 'ni_remove_site_health_menu' );
/////////////////// CREATE CUSTOM DASHBOARD WIDGETS ///////////////////
// Create Custom Client Dashboard Widget
add_action('wp_dashboard_setup', 'ni_custom_dashboard_widget');
function ni_custom_dashboard_widget() {
global $wp_meta_boxes;
wp_add_dashboard_widget('ni_client_widget', '&nbsp;', 'ni_client_widget_content');
}
function ni_client_widget_content() {
$url = get_site_url();
echo '<p style="text-align:center"><img src="//nathaningram-archive.s3.amazonaws.com/icons/brilliant-logo-250w.png" /></p>
<p style="margin: 1.5em 0;"><a style="min-width:45%; text-align:center;float:left;margin:5px;" class="button" href="#" target="_blank" rel="noopener noreferrer"> Google Analytics Instructions</a></p>
<p style="margin: 1.5em 0;"><a style="min-width:45%; text-align:center;float:left;margin:5px;" class="button" href="#">WordPress Help Videos</a></p>
<p style="margin: 1.5em 0;"><a style="min-width:45%; text-align:center;float:left;margin:5px;" class="button" href="#">WordPress Manual</a></p>
<p style="margin: 1.5em 0;"><a style="min-width:45%; text-align:center;float:left;margin:5px;" class="button" href="mailto
:support@wpnathan.com?Subject=BRIEFLY DESCRIBE YOUR ISSUE&body=Change the subject line above to a summary of your issue, then provide more detail here.">Create a Support Ticket</a></p>
<div style="clear:both;float:none;"></div>';
}
//Add a Support Form Widget
function ni_register_custom_dashboard_support_widget() {
wp_add_dashboard_widget(
'custom_dashboard_widget',
'Support Request Form', //Title for Dashboard Widget
'ni_custom_dashboard_support_widget_content'
);
}
function ni_custom_dashboard_support_widget_content() {
echo do_shortcode('[gravityform id="2" title="false" description="false" ajax="true"]'); //Add your shortcode here
}
add_action( 'wp_dashboard_setup', 'ni_register_custom_dashboard_support_widget' );
/////////////////// PLUGIN RELATED FUNCTIONS ///////////////////
// Give Editors Full Gravity Forms Access
if ( is_plugin_active( 'gravityforms/gravityforms.php' ) ) {
add_action('admin_init','ni_add_grav_forms');
}
function ni_add_grav_forms(){
$role = get_role('editor');
$role->add_cap('gform_full_access');
}
// Change Pods MORE FIELDS Metabox Title to Custom
add_filter('pods_meta_default_box_title','ni_change_pod_metabox_title',10,5);
function ni_change_pod_metabox_title($title, $pod, $fields, $type, $name ) {
// assuming we are changing the meta box titles pods named pod1, pod2, and pod3
// delete the lines not in use, add as many as needed
$title = ($name=='pod1') ? __('More Info', 'plugin_lang') : $title ;
$title = ($name=='pod1') ? __('Even More Info', 'plugin_lang') : $title ;
$title = ($name=='pod3') ? __('Way More Info', 'plugin_lang') : $title ;
return $title;
}
/////////////////// SHORTCODE CREATION ///////////////////
// Site URL Shortcode
function ni_site_url() {
$siteurl = get_site_url();
return $siteurl;
}
add_shortcode('siteurl','ni_site_url');
//Current Year Shortcode
function ni_year_shortcode() {
$year = date('Y');
return $year;
}
add_shortcode('year', 'ni_year_shortcode');
//Anti-Spam Email Shortcode
//Use this shortcode [email]nathan@ithemes.com[/email]
function ni_protect_email_address( $atts , $content=null ) {
for ($i = 0; $i < strlen($content); $i++) $encodedmail .= "&#" . ord($content[$i]) . ';';
return '<a href="mailto:'.$encodedmail.'">'.$encodedmail.'</a>';
}
add_shortcode('email', 'ni_protect_email_address');
//Years Since Shortcode
//usage [years-since date='2010-01-01']
function ni_years_since($atts, $content = null) {
extract(shortcode_atts(array("date" => ''), $atts));
if(empty($date)) {
return "<br /><br />************No date provided************<br /><br />";
}
$mdr_unix_date = strtotime($date);
$mdr_time_difference = time() - $mdr_unix_date ;
$years = floor($mdr_time_difference / 31556926 );
$num_years_since = $years;
return $num_years_since .' years';
}
add_shortcode('years-since', 'ni_years_since');
/////////////////// MISCELLANEOUS FUNCTIONS ///////////////////
// Define Custom Image Sizes
if ( function_exists( 'add_image_size' ) ) {
add_image_size( 'News Grid', 300, 200, true );
add_image_size( 'News Large', 800, 400, true );
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment