SpyreStudios

Web-Design and Development Magazine

  • Design
  • Showcase
  • Inspirational
  • Tutorials
  • CSS
  • Resources
  • Tools
  • UX
  • More
    • Mobile
    • Usability
    • HTML5
    • Business
    • Freebies
    • Giveaway
    • About SpyreStudios
    • Advertise On SpyreStudios
    • Get In Touch With Us

17 Time Saving Code Snippets for WordPress Developers

November 28, 2011 by Jake Rocheleau

The WordPress blogging system has grown by leaps and bounds in just a few short years. Web developers familiar with JavaScript and PHP have flocked into the community. As such we have seen a tremendous surge in free code, plugins, and templates for WordPress 3.2.

In the collection below you can find 17 amazingly helpful code snippets which you can implement into your blog. WordPress makes it super-easy to build off their own framework and classes. All of these codes are simply cut-and-paste solutions for your theme’s functions.php – which just goes to show WordPress’ creativity and novelty as a web CMS platform.

Increase the excerpt field height

[php wraplines=”false”]add_action(‘admin_head’, ‘excerpt_textarea_height’);
function excerpt_textarea_height() {
echo’
<style type="text/css">
#excerpt{ height:500px; }
</style>
‘;
}
[/php]

Dynamically create and attach sidebars to pages/posts

[php wraplines=”false”] $dynamic_widget_areas = array(
/* rename or create new dynamic sidebars */
"Sidebar 01",
"Sidebar 02",
"Sidebar 03",
"Sidebar 04",
"Sidebar 05",
"Sidebar 06",
"Sidebar 07",
"Search Template",
);
if ( function_exists(‘register_sidebar’) ) {
foreach ($dynamic_widget_areas as $widget_area_name) {
register_sidebar(array(
‘name’=> $widget_area_name,
‘before_widget’ => ‘<div id="%1$s" class="widget %2$s left half">’,
‘after_widget’ => ‘</div>’,
‘before_title’ => ‘<h3 class="widgettitle">’,
‘after_title’ => ‘</h3>’,
));
}
}
add_action("admin_init", "sidebar_init");
add_action(‘save_post’, ‘save_sidebar_link’);
function sidebar_init(){
add_meta_box("sidebar_meta", "Sidebar Selection", "sidebar_link", "page", "side", "default");
}
function sidebar_link(){
global $post, $dynamic_widget_areas;
$custom = get_post_custom($post->ID);
$link = $custom["_sidebar"][0];
?>
<div class="link_header">
<?
echo ‘<select name="link" class="sidebar-selection">’;
echo ‘<option>Select Sidebar</option>’;
echo ‘<option>———————–</option>’;
foreach ( $dynamic_widget_areas as $list ){
if($link == $list){
echo ‘<option value="’.$list.’" selected="true">’.$list.'</option>’;
}else{
echo ‘<option value="’.$list.’">’.$list.'</option>’;
}
}
echo ‘</select><br />’;
?>
</div>
<p>Select sidebar to use on this page.</p>
<?php
}
function save_sidebar_link(){
global $post;
if (defined(‘DOING_AUTOSAVE’) && DOING_AUTOSAVE) {return $post->ID;}
update_post_meta($post->ID, "_sidebar", $_POST["link"]);
}
add_action(‘admin_head’, ‘sidebar_css’);
function sidebar_css() {
echo’
<style type="text/css">
.sidebar-selection{width:100%;}
</style>
‘;
}
[/php]

Remove the screen options tab with screen_options hook

[php wraplines=”false”]function remove_screen_options(){
return false;
}
add_filter(‘screen_options_show_screen’, ‘remove_screen_options’);
[/php]

Display related posts by posts current author

[php wraplines=”false”]function get_related_author_posts() {
global $authordata, $post;
$authors_posts = get_posts( array( ‘author’ => $authordata->ID, ‘post__not_in’ => array( $post->ID ), ‘posts_per_page’ => 5 ) );
$output = ‘<ul>’;
foreach ( $authors_posts as $authors_post ) {
$output .= ‘<li><a href="’ . get_permalink( $authors_post->ID ) . ‘">’ . apply_filters( ‘the_title’, $authors_post->post_title, $authors_post->ID ) . ‘</a></li>’;
}
$output .= ‘</ul>’;
return $output;
}
[/php]

Automatically add the Google +1 button

[php wraplines=”false”]add_filter(‘the_content’, ‘google_plusone’);
function google_plusone($content) {
$content = $content.'<div class="plusone"><g:plusone size="tall" href="’.get_permalink().’"></g:plusone></div>’;
return $content;
}
add_action (‘wp_enqueue_scripts’,’google_plusone_script’);
function google_plusone_script() {
wp_enqueue_script(‘google-plusone’, ‘https://apis.google.com/js/plusone.js’, array(), null);
}
[/php]

Adjust settings on theme activation

[php wraplines=”false”]add_action( ‘after_setup_theme’, ‘the_theme_setup’ );
function the_theme_setup()
{
// First we check to see if our default theme settings have been applied.
$the_theme_status = get_option( ‘theme_setup_status’ );
// If the theme has not yet been used we want to run our default settings.
if ( $the_theme_status !== ‘1’ ) {
// Setup Default WordPress settings
$core_settings = array(
‘avatar_default’ => ‘mystery’, // Comment Avatars should be using mystery by default
‘avatar_rating’ => ‘G’, // Avatar rating
‘comment_max_links’ => 0, // We do not allow links from comments
‘comments_per_page’ => 20 // Default to 20 comments per page
);
foreach ( $core_settings as $k => $v ) {
update_option( $k, $v );
}
// Delete dummy post, page and comment.
wp_delete_post( 1, true );
wp_delete_post( 2, true );
wp_delete_comment( 1 );

update_option( ‘theme_setup_status’, ‘1’ );
$msg = ‘
<div class="error">
<p>The ‘ . get_option( ‘current_theme’ ) . ‘theme has changed your WordPress default <a href="’ . admin_url() . ‘options-general.php" title="See Settings">settings</a> and deleted default posts & comments.</p>
</div>’;
add_action( ‘admin_notices’, $c = create_function( ”, ‘echo "’ . addcslashes( $msg, ‘"’ ) . ‘";’ ) );
}
elseif ( $the_theme_status === ‘1’ and isset( $_GET[‘activated’] ) ) {
$msg = ‘
<div class="updated">
<p>The ‘ . get_option( ‘current_theme’ ) . ‘ theme was successfully re-activated.</p>
</div>’;
add_action( ‘admin_notices’, $c = create_function( ”, ‘echo "’ . addcslashes( $msg, ‘"’ ) . ‘";’ ) );
}
}
[/php]

Count total number of images in media library

[php wraplines=”false”]function img_count(){
$query_img_args = array(
‘post_type’ => ‘attachment’,
‘post_mime_type’ =>array(
‘jpg|jpeg|jpe’ => ‘image/jpeg’,
‘gif’ => ‘image/gif’,
‘png’ => ‘image/png’,
),
‘post_status’ => ‘inherit’,
‘posts_per_page’ => -1,
);
$query_img = new WP_Query( $query_img_args );
echo $query_img->post_count;
}
[/php]

Display top 8 authors in wp_nav_menu using wp_list_authors

[php wraplines=”false”]function wps_nav_authors($items, $args){
if( $args->theme_location == ‘header-navigation’ )
return $items . ‘<li><a href="#">Authors</a><ul class="sub-menu"><li>’ . wp_list_authors(‘show_fullname=1&optioncount=0&orderby=post_count&order=DESC&number=8&echo=0’) . ‘</li></ul></li>’;
}
add_filter(‘wp_nav_menu_items’,’wps_nav_authors’, 10, 2);
[/php]

Get feedburner count using get_transient and wp_remote_get

[php wraplines=”false”]function feed_subscribers(){
$feed_url = ‘http://feeds.feedburner.com/yourname’;
$count = get_transient(‘feed_count’);
if ($count != false) return $count;
$count = 0;
$data = wp_remote_get(‘http://feedburner.google.com/api/awareness/1.0/GetFeedData?uri=’.$feed_url.”);
if (is_wp_error($data)) {
return ‘error’;
}else{
$body = wp_remote_retrieve_body($data);
$xml = new SimpleXMLElement($body);
$status = $xml->attributes();
if ($status == ‘ok’) {
$count = $xml->feed->entry->attributes()->circulation;
} else {
$count = 300; // fallback number
}
}
set_transient(‘feed_count’, $count, 60*60*24); // 24 hour cache
echo $count;
}
[/php]

Changing the HTML editor font in wp 3.2

[php wraplines=”false”]add_action( ‘admin_head-post.php’, ‘devpress_fix_html_editor_font’ );
add_action( ‘admin_head-post-new.php’, ‘devpress_fix_html_editor_font’ );
function devpress_fix_html_editor_font() { ?>
<style type="text/css">#editorcontainer #content, #wp_mce_fullscreen { font-family: Georgia, "Times New Roman", "Bitstream Charter", Times, serif; }</style>
<?php } ?>
[/php]

Restrict wp-admin access to subscribers

[php wraplines=”false”]function restrict_access_admin_panel(){
global $current_user;
get_currentuserinfo();
if ($current_user->user_level < 4) {
wp_redirect( get_bloginfo(‘url’) );
exit;
}
}
add_action(‘admin_init’, ‘restrict_access_admin_panel’, 1);
[/php]

Add rel=”lightbox” to all images embedded in a post

[php wraplines=”false”]add_filter(‘the_content’, ‘my_addlightboxrel’);
function my_addlightboxrel($content) {
global $post;
$pattern ="/<a(.*?)href=(‘|\")(.*?).(bmp|gif|jpeg|jpg|png)(‘|\")(.*?)>/i";
$replacement = ‘<a$1href=$2$3.$4$5 rel="lightbox" title="’.$post->post_title.’"$6>’;
$content = preg_replace($pattern, $replacement, $content);
return $content;
}
[/php]

Change default “Enter title here” text within post title input field

[php wraplines=”false”]function title_text_input( $title ){
return $title = ‘Enter new title’;
}
add_filter( ‘enter_title_here’, ‘title_text_input’ );
[/php]

Redirect commenter to thank you post or page

[php wraplines=”false”]add_filter(‘comment_post_redirect’, ‘redirect_after_comment’);
function redirect_after_comment(){
wp_redirect(‘/thank-you-page/’);
exit();
}
[/php]

Create most recent posts dashboard widget

[php wraplines=”false”]function wps_recent_posts_dw() {
?>
<ol>
<?php
global $post;
$args = array( ‘numberposts’ => 5 );
$myposts = get_posts( $args );
foreach( $myposts as $post ) : setup_postdata($post); ?>
<li> (<? the_date(‘Y / n / d’); ?>) <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a></li>
<?php endforeach; ?>
</ol>
<?php
}
function add_wps_recent_posts_dw() {
wp_add_dashboard_widget( ‘wps_recent_posts_dw’, __( ‘Recent Posts’ ), ‘wps_recent_posts_dw’ );
}
add_action(‘wp_dashboard_setup’, ‘add_wps_recent_posts_dw’ );
[/php]

Display hidden custom field _values

[php wraplines=”false”]add_action( ‘admin_head’, ‘showhiddencustomfields’ );
function showhiddencustomfields() {
echo "<style type=’text/css’>#postcustom .hidden { display: table-row; }</style>\n";
}
[/php]

Loading jQuery from the Google CDN with wp_register_script

[php wraplines=”false”]add_action( ‘init’, ‘jquery_register’ );
function jquery_register() {
if ( !is_admin() ) {
wp_deregister_script( ‘jquery’ );
wp_register_script( ‘jquery’, ( ‘http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.min.js’ ), false, null, true );
wp_enqueue_script( ‘jquery’ );
}
}
[/php]

Author: Jake Rocheleau

Jake is a creative designer, illustrator, and web developer. He frequently writes articles involving new-age design concepts and freelance management skills. You can find him in Google or follow his tweets @jakerocheleau

Filed Under: WordPress

SpyreStudios © 2019