Sort by: Recently Added Likes

Add CSS Class to Filled Fields

@replace {{class}}

<?php
// Checks whether form inputs are filled and adds a targetable class if they have value
add_action( 'wp_footer', function () { ?>

   <script type="text/javascript">
      jQuery(document).ready( function() {
         function checkFilledInputs() {
            jQuery('textarea,input').each( function() { toggleFilledInputs(this); });
            jQuery('textarea,input').change( function() { toggleFilledInputs(this); });
         }

         function toggleFilledInputs(e) {
            if ( jQuery(e).val().trim().length > 0 ) {
               jQuery(e).addClass('{{class}}');
            } else {
               jQuery(e).removeClass('{{class}}');
            }
         }

         jQuery(document).bind('gform_post_render', function() { checkFilledInputs(); });
         
         checkFilledInputs();
      });
   </script>

<?php } );

#

Change Header Logo HREF

@replace {{link}}

// Change the URL to which the header logo links
add_filter( 'generate_logo_href', function( $url ) {
    return '{{link}}';
});

#

Redirect Solitary Search Results to the Post

// If a search results returns only a single post, then redirect the user to that post
add_action( 'template_redirect', function () {

   if ( is_search() ) {

      global $wp_query;

      if ( $wp_query->post_count == 1 && $wp_query->max_num_pages == 1 ) {

         wp_redirect( get_permalink( $wp_query->posts['0']->ID ) );
         exit;

      }

   }

} );

Source

Remove Welcome Panel

// Remove the welcome panel for new WordPress installs
remove_action( 'welcome_panel', 'wp_welcome_panel' );

#

Replace Numbered Months with Named Months in Date Field

<?php // Replace the numbered months with named months in a Gravity Forms dropdown date field
add_action( 'wp_footer', function () { ?>

   <script type="text/javascript">
      jQuery(document).ready(function( $ ) {
         $('.gfield_date_dropdown_month select option').each( function(i, option) {
            switch( option.value ) {
               case '1': option.innerHTML = 'January'; break;
               case '2': option.innerHTML = 'February'; break;
               case '3': option.innerHTML = 'March'; break;
               case '4': option.innerHTML = 'April'; break;
               case '5': option.innerHTML = 'May'; break;
               case '6': option.innerHTML = 'June'; break;
               case '7': option.innerHTML = 'July'; break;
               case '8': option.innerHTML = 'August'; break;
               case '9': option.innerHTML = 'September'; break;
               case '10': option.innerHTML = 'October'; break;
               case '11': option.innerHTML = 'November'; break;
               case '12': option.innerHTML = 'December'; break;
            }
         });
      });
   </script>

<?php } );

#

Auto-Link Caption to Same URL As the Image’s Link

Add link-the-caption as Additional CSS Class on image block. Caption should contain no other links.

// Auto-link image caption to the same URL as that to which the image has been linked
jQuery(document).ready(function( $ ) {

   $('.link-the-caption').each( function() {

      let image_link = $(this).attr('href');
      let image_caption = $(this).next().html();

      $(this).next().html('<a href="'+image_link+'">'+image_caption+'</a>');

   });

});

#

Custom Merge Tags

<?php // Introduce additional merge tags for use throughout Gravity Forms
add_filter( 'gform_replace_merge_tags', function ( $text, $form, $entry, $url_encode, $esc_html, $nl2br, $format ) {

   $custom_merge_tags = array(
      '{date_ymd}'  => date( 'Y.m-M.d', strtotime( $entry['date_created'] ) ),
      '{timestamp}' => time(),
      '{site_url}'  => get_site_url(),
      '{site_name}' => get_bloginfo( 'name' )
   );
    
   return str_replace( array_keys( $custom_merge_tags ), array_values( $custom_merge_tags ), $text);

}, 10, 7 );

// Add our custom merge tags to the dropdown
add_action( 'gform_admin_pre_render', function ( $form ) { ?>

   <script type="text/javascript">
      gform.addFilter('gform_merge_tags', function (mergeTags, elementId, hideAllFields, excludeFieldTypes, isPrepop, option) {
         mergeTags["custom"].tags.push({ tag: '{date_ymd}', label: 'Entry Date (Y.m-M.d)' });
         mergeTags["custom"].tags.push({ tag: '{timestamp}', label: 'Current Time (UNIX Timestamp)' });
         mergeTags["custom"].tags.push({ tag: '{site_url}', label: 'Site URL' });
         mergeTags["custom"].tags.push({ tag: '{site_name}', label: 'Site Name' });
         return mergeTags;
      } );
   </script>

   <?php return $form;

} );

#

Remove Comment Form URL Field

// Remove the URL field from the WordPress comment form
add_filter( 'comment_form_default_fields', function ( $fields ) {

   unset( $fields['url'] );

   return $fields;

} );

Source

Notification Interception

@replace {{_formID}}, {{email}}

// Sends all Gravity Form notifications to the specified email address
add_filter( 'gform_notification{{_formID}}', function ( $notification, $form, $entry ) {

   $notification['toType'] = 'email';
   $notification['to'] = '{{email}}';

   return $notification;

}, 10, 3 );

#

Limit Countries

@replace {{_formID}}

// Filter the countries that are selectable in an address field
add_filter( 'gform_pre_render{{_formID}}', 'typewheel_limit_countries' );
add_filter( 'gform_pre_validation{{_formID}}', 'typewheel_limit_countries' );
add_filter( 'gform_pre_submission_filter{{_formID}}', 'typewheel_limit_countries' );
add_filter( 'gform_admin_pre_render{{_formID}}', 'typewheel_limit_countries' );

function typewheel_limit_countries( $form ) {

  add_filter( 'gform_countries', function( $countries ) {
    return array( 'Brazil', 'United States', 'Netherlands', 'United Kingdom' );
  });

  return $form;

}

#

Create Globally Accessible Counter in Queries

/**
 * Create a globally accessible counter for all queries
 * Even custom new WP_Query!
 */

// Initialize your variables
add_action( 'init', function () {
   global $cqc;
   $cqc = -1;
} );

// At loop start, always make sure the counter is -1
// This is because WP_Query calls "next_post" for each post,
// even for the first one, which increments by 1
// (meaning the first post is going to be 0 as expected)
add_action( 'loop_start', function ( $q ) {
   global $cqc;
   $cqc = -1;
}, 100, 1 );

// At each iteration of a loop, this hook is called
// We store the current instance's counter in our global variable
add_action( 'the_post', function ( $p, $q ) {
   global $cqc;
   $cqc = $q->current_post;
}, 100, 2 );

// At each end of the query, we clean up by setting the counter to
// the global query's counter. This allows the custom $cqc variable
// to be set correctly in the main page, post or query, even after
// having executed a custom WP_Query.
add_action( 'loop_end', function ( $q ) {
   global $wp_query, $cqc;
   $cqc = $wp_query->current_post;
}, 100, 1 );

Source

Staging and incremental backups for WordPress.