WP Smith

Creating WordPress & Genesis Websites Since 2010

  • Home
  • About
  • Services
  • Blog
  • Contact

Mar 20 2011

How to Add More Icons to the Genesis Social Profiles Widget

Nathan Rice wrote a simple but excellent plugin called the Social Profiles Widget. I love the simplicity and only wanted to add one feature, the ability to quickly add my own icons by dumping a folder with the other social profiles folders. So this required changing the code. Because I have not received permission from Nathan Rice to update and contribute to his plugin, I'll share it here. Download: [download id="4"]

[php]<?php
/*
Plugin Name: Social Profiles Widget
Plugin URI: http://www.studiopress.com/plugins/social-profiles-widget
Description: This plugin/widget allows you to insert social profile icons into your sidebar via a widget.
Version: 1.1.1
Author: Nathan Rice
Author URI: http://www.nathanrice.net/

This plugin is released under the GPLv2 license. The images packaged with this plugin are the property of
their respective owners, and do not, necessarily, inherit the GPLv2 license.
*/
/*
Slightly modified by Travis Smith, https://wpsmith.net, to allow for additional icon folders to be uploaded. Simply upload custom folder to the images folder. Be sure to name your icons [SOCIAL]_32x32.* and [SOCIAL]_48x48.* [SOCIAL]=Delicious, Digg, Facebook, Feed, Flickr, Linkedin, Myspace, Stumbleupon, Twitter (e.g., Twitter_32x32.png)
*/
/**
* Register the Widget
*/
add_action('widgets_init', 'social_profiles_widget_register');
function social_profiles_widget_register() {
register_widget('Social_Profiles_Widget');
}

/**
* The Widget Class
*/
if ( !class_exists('Social_Profiles_Widget') ) {
class Social_Profiles_Widget extends WP_Widget {

function Social_Profiles_Widget() {
$widget_ops = array( 'classname' => 'social-profiles', 'description' => __('Displays Social Profile links as icons', 'spw') );
$this->WP_Widget( 'socialprofiles', __('Social Profiles', 'spw'), $widget_ops );
}

var $plugin_imgs_url;

function spw_fields_array( $instance = array() ) {

$this->plugins_imgs_url = plugin_dir_url(__FILE__) . 'images/';

return array(
'feedburner' => array(
'title' => __('RSS/Feedburner URL', 'spw'),
'img' => sprintf( '%s/Feed_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Feed_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('RSS', 'spw')
),
'twitter' => array(
'title' => __('Twitter URL', 'spw'),
'img' => sprintf( '%s/Twitter_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Twitter_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('Twitter', 'spw')
),
'facebook' => array(
'title' => __('Facebook URL', 'spw'),
'img' => sprintf( '%s/Facebook_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Facebook_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('Facebook', 'spw')
),
'linkedin' => array(
'title' => __('Linkedin URL', 'spw'),
'img' => sprintf( '%s/Linkedin_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Linkedin_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('Linkedin', 'spw')
),
'youtube' => array(
'title' => __('YouTube URL', 'spw'),
'img' => sprintf( '%s/Youtube_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Youtube_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('Youtube', 'spw')
),
'flickr' => array(
'title' => __('Flickr URL', 'spw'),
'img' => sprintf( '%s/Flickr_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Flickr_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('Flickr', 'spw')
),
'delicious' => array(
'title' => __('Delicious URL', 'spw'),
'img' => sprintf( '%s/Delicious_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Delicious_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('Delicious', 'spw')
),
'stumbleupon' => array(
'title' => __('StumbleUpon URL', 'spw'),
'img' => sprintf( '%s/Stumbleupon_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Stumbleupon_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('StumbleUpon', 'spw')
),
'digg' => array(
'title' => __('Digg URL', 'spw'),
'img' => sprintf( '%s/Digg_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Digg_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('Digg', 'spw')
),
'myspace' => array(
'title' => __('MySpace URL', 'spw'),
'img' => sprintf( '%s/Myspace_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), esc_attr( $instance['size'] ) ),
'img_widget' => sprintf( '%s/Myspace_%s.png', $this->plugins_imgs_url . esc_attr( $instance['icon_set'] ), '48x48' ),
'img_title' => __('MySpace', 'spw')
),
);
}

function widget($args, $instance) {

extract($args);

$instance = wp_parse_args($instance, array(
'title' => '',
'icon_set' => 'default',
'size' => '48x48'
) );

echo $before_widget;

if ( !empty( $instance['title'] ) )
echo $before_title . $instance['title'] . $after_title;

foreach ( $this->spw_fields_array( $instance ) as $key => $data ) {
if ( !empty ( $instance[$key] ) ) {
printf( '<a href="%s"><img src="%s" alt="%s" /></a>', esc_url( $instance[$key] ), esc_url( $data['img'] ), esc_attr( $data['img_title'] ) );
}
}

echo $after_widget;

}

function update($new_instance, $old_instance) {
return $new_instance;
}

function dir_list($d){
foreach(array_diff(scandir($d),array('.','..')) as $f) {
if(is_dir($d.'/'.$f)) {
$l[]=$f;
}
}
return $l;
}

function form($instance) {
$dir = WP_PLUGIN_DIR.'/social-profiles-widget/images';
$imagefolders = $this->dir_list($dir);
$instance = wp_parse_args($instance, array(
'title' => '',
'icon_set' => 'default',
'size' => '48x48'
) );
?>

<p>
<label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title', 'spw'); ?>:</label><br />
<input id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" value="<?php echo $instance['title']; ?>" style="width:95%;" />
</p>

<p>
<label for="<?php echo $this->get_field_id('icon_set'); ?>"><?php _e('Icon Set', 'spw'); ?>:</label>
<select id="<?php echo $this->get_field_id('icon_set'); ?>" name="<?php echo $this->get_field_name('icon_set'); ?>">
<?php
foreach ($imagefolders as $key => $folder) :
?>
<option style="padding-right:10px;" value="<?php echo $folder; ?>" <?php selected($folder, $instance['icon_set']); ?>><?php _e($folder, 'spw'); ?></option>
<?php endforeach; ?>
</select>
</p>

<p>
<label for="<?php echo $this->get_field_id('size'); ?>"><?php _e('Icon Size', 'spw'); ?>:</label>
<select id="<?php echo $this->get_field_id('size'); ?>" name="<?php echo $this->get_field_name('size'); ?>">
<option style="padding-right:10px;" value="32x32" <?php selected('32x32', $instance['size']); ?>><?php _e('Small', 'spw'); ?> (32px)</option>
<option style="padding-right:10px;" value="48x48" <?php selected('48x48', $instance['size']); ?>><?php _e('Large', 'spw'); ?> (48px)</option>
</select>
</p>

<p><?php _e('Enter the URL(s) for your various social profiles below. If you leave a profile URL field blank, it will not be used.', 'spw'); ?></p>

<?php

foreach ( $this->spw_fields_array( $instance ) as $key => $data ) {
echo '<p>';
printf( '<img style="float: left; margin-right: 3px;" src="%s" title="%s" />', $data['img_widget'], $data['img_title'] );
printf( '<label for="%s"> %s:</label>', esc_attr( $this->get_field_id($key) ), esc_attr( $data['title'] ) );
printf( '<input id="%s" name="%s" value="%s" style="%s" />', esc_attr( $this->get_field_id($key) ), esc_attr( $this->get_field_name($key) ), esc_url( $instance[$key] ), 'width:65%;' );
echo '</p>' . "n";
}

}
}}[/php]

Written by Travis Smith · Categorized: Genesis, Plugins

StudioPress Premium WordPress Themes     WP Engine Managed WordPress Hosting

What can I do for you!?

Custom Development

We develop plugins by determining both business/functional and technical requirements, following WordPress development best practices, and using agile methodology to ensure you get the best solution.

Consulting

Have questions? Need a reliable developer to consult? Please contact us today!

Customized Theme

We can customize your theme or child theme, or create a child theme for you based on your needs while enhancing the performance of every individual attribute.

Customized Plugin

We can customize your plugins, extend plugins (e.g., Gravity Forms, Jetpack, Soliloquy) based on your needs ensuring security, performance, and positive business impact.

Contact Us

About Travis Smith

As a WordPress enthusiast, developer, and speaker, Travis writes about what he learns in WordPress trying to help other WordPress travelers, beginners and enthusiasts with tutorials, explanations, & demonstrations.

Comments

  1. Keith Davis says

    February 13, 2012 at 12:26 pm

    Hi Travis
    I’m using Nathan’s plugin at the moment and want to add the Pinterest icon.

    When I found your post I thought brilliant!… but no Pinterest icon.
    Any chance you could add it?

    Pretty please.

    Reply

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

  • Twitter
  • Facebook
  • LinkedIn
  • Google+
  • RSS

Copyright © 2025 � WP Smith on Genesis on Genesis Framework � WordPress � Log in