WordPress automatically turns URLs posted in comments into links. The downside to this feature is that it helps spammers publish links in their comments. You can remove this functionality with the following code snippet. Add the below snippets in functions.php file to Remove Auto Linking of URLs in WordPress Comments
remove_filter('comment_text', 'make_clickable', 9);
A good way to tackle spam and encourage better comments is to apply a minimum length for comments. This helps stop small irrelevant comments such as “Great post” and “Thanks!”. Add the below snippets in functions.php file for Require Minimum Comment Length
add_filter( 'preprocess_comment', 'minimal_comment_length' ); function minimal_comment_length( $commentdata ) { $minimalCommentLength = 20; if ( strlen( trim( $commentdata['comment_content'] ) ) < $minimalCommentLength ){ wp_die( 'All comments must be at least ' . $minimalCommentLength . ' characters long.' ); } return $commentdata; }
Marking comments that have very long URLs in the website field will help you tackle spammers. However, if you find that spam is getting out of control, you may want to consider removing the website URL field altogether. If you implement the snippet below and configure your WordPress discussion settings so that any comment with a link is held for moderation; you can effectively stop all spam entirely. File to Edit: Functions.php
function remove_comment_fields($fields) { unset($fields['url']); return $fields; } add_filter('comment_form_default_fields','remove_comment_fields');
Spammers frequently link to web pages with very long URLs. Therefore, if someone publishes a comment and enters a long URL in the website field, there is a high chance that the comment was published by a spammer. The snippet below allows you to mark a comment as spam that has a website URL over 50 characters. You can increase or decrease this limit to suit your own needs.
<?php function rkv_url_spamcheck( $approved , $commentdata ) { return ( strlen( $commentdata['comment_author_url'] ) > 50 ) ? 'spam' : $approved; } add_filter( 'pre_comment_approved', 'rkv_url_spamcheck', 99, 2 ); ?>
Doing searches in WordPress will pull results from both pages and posts, sometimes with not much relevance to your search query. To prevent this, you can filter the search results to show only those found in posts. Add this snippet to function.php to do this.
function SearchFilter($query) { if ($query->is_search) { $query->set('post_type', 'post'); } return $query; } add_filter('pre_get_posts','SearchFilter');
Links that are included in the comments form will instantly become a clickable link once they are posted and approved. This can be exploited by spammers, encouraging them to flood your comment section with a link to their "spammy" page. To counter this, you can add this filter to disable the click-ability of the link(s) and retain them simply as plain text.
remove_filter('comment_text', 'make_clickable', 9);
Disable the 'visual' editor for both posts and pages and leave ‘text’.
add_filter('user_can_richedit' , create_function('' , 'return false;') , 50);
Add search form to wordpress nav menu by Adding this snippet to the functions.php of your wordpress theme will add the search form to your wordpress wp_nav_menu. Don’t forget to update the MENU-NAME to specify the menu you wish to display within, just in case you have multiple menus.
add_filter('wp_nav_menu_items', 'add_search_form', 10, 2); function add_search_form($items, $args) { if( $args->theme_location == 'MENU-NAME' ) $items .= '<li class="search"><form role="search" method="get" id="searchform" action="'.home_url( '/' ).'"><input type="text" value="search" name="s" id="s" /><input type="submit" id="searchsubmit" value="'. esc_attr__('Search') .'" /></form></li>'; return $items; }
Adding this snippet within the loop of your index.php template file will display a list of all post attachments with the following metadata (Credit, Camera, Focal Length, Aperture, ISO, Shutter Speed, Time Stamp, Copyright).
<?php if($images =& get_children( 'post_type=attachment' )){ foreach($images as $id => $attachment ){ echo '<div>'; echo wp_get_attachment_image( $id, 'thumb' )."<br />"; $meta = wp_get_attachment_metadata($id); echo "Credit: ".$meta[image_meta][credit]."<br /> "; echo "Camera: ".$meta[image_meta][camera]."<br />"; echo "Focal length: ".$meta[image_meta][focal_length]."<br />"; echo "Aperture: ".$meta[image_meta][aperture]."<br />"; echo "ISO: ".$meta[image_meta][iso]."<br />"; echo "Shutter speed: ".$meta[image_meta][shutter_speed]."<br />"; echo "Time Stamp: ".$meta[image_meta][created_timestamp]."<br />"; echo "Copyright: ".$meta[image_meta][copyright]; echo '</div>'; } } ?>
Adding this snippet to the functions.php of your wordpress theme will let you add a body_class based on a specific page template.
function add_archive_classes_to_page_templates($classes) { if (is_page_template('news.php')) { $classes[] = 'news'; } return $classes; } add_filter('body_class', 'add_archive_classes_to_page_templates');
It’s common practice to display a featured image that represents or describes a post. WordPress requires us to set this featured image manually. To make the process more efficient, we can set the featured image automatically by making the first image in the post the featured image. Use the following code snippet.
function autoset_featured() { global $post; $already_has_thumb = has_post_thumbnail($post->ID); if (!$already_has_thumb) { $attached_image = get_children( "post_parent=$post->ID&post_type=attachment&post_mime_type=image&numberposts=1" ); if ($attached_image) { foreach ($attached_image as $attachment_id => $attachment) { set_post_thumbnail($post->ID, $attachment_id); } } } } add_action('the_post', 'autoset_featured'); add_action('save_post', 'autoset_featured'); add_action('draft_to_publish', 'autoset_featured'); add_action('new_to_publish', 'autoset_featured'); add_action('pending_to_publish', 'autoset_featured'); add_action('future_to_publish', 'autoset_featured');
By adding this to your footer.php template you can Automatically Update Copyright Notice WordPress in your footer every year automatically.
Copyright © <?php echo the_date('Y'); ?> Website Name
I find it very useful to have an edit link on posts and pages so that I can edit articles quickly if I see a mistake or want to adjust something. You can do this by simply adding the code below to your single.php and page.php templates. Make sure the function is added within the loop. Personally, I usually add it directly after the closing H1 tag that wraps around the_title().
<?php edit_post_link(__('Edit This')); ?>