You are searching for jQuery sliders? Search no more, here we have composed a list of the best slider that you can find on the internet. Some of them are free and very customizable and some of them are worth spending some money to achieve your goal.

Rhinoslider

This slider offers many different effects, you can use the generator to create your slider so you don’t spend a lot of time customizing your options.

Nivo

The slider has a lot of cool effects you can get the free version or you can get one of the paid ones. It has very nice documentation and its very easy to implement.

Slidedeck

Slidedeck offers a fully paid version only you have 3 options and tons of cool options and also you get a WordPress plugin for your money.

Easy Slider

It’s free and basic, but if you are comfortable with jQuery and you need to extend the slider to create something that you can’t find on the internet this is the way to go. We have extended the script in so many ways and it never failed us before.

Wowslider

Offers a free version for noncommercial usage. There a lot of good examples on the site, good documentation so you don’t get lost and most important thing, it can fit in any design.

Unslider

Free responsive slider that is very easy to use, it has all the options you will need. It can be used for mobile, it supports touch events if you use jQuery.event.swipe in combination with it.

Camera

Thumbnail preview, cool effects good documentation all you need to implement is just to download the files and take a look at the documentation.

Bookmark and Share

In this tutorial we will create a simple Flicker widget using the Flicker API and the WordPress widget API. The widget can be used multiple times and it will require your Flicker ID and the number of images to display. If we search for something like this we can find a tons of premade widgets, but nothing can be more fun than making it yourself.

Introduction

Flicker is the most popular photo service out there. By creating the Flicker widget you will learn how to use the Flicker API and how to create WordPress widgets.
You can download the widget here

  1. Create a folder flicker_widget in your plug-ins dir.
  2. Create a php file and name it flicker_widget.php.

Step 1 – Create the widget extend class.

From WordPress 2.8 we can copy and paste the widget skeleton code.

	class flickr_widget extends WP_Widget {
    function flickr_widget() {
    parent::WP_Widget(false, $name = 'Flickr Widget');
    }
    
    function form($instance) {
    }
    
    function update($new_instance, $old_instance) {
    }
    
    function widget($args, $instance) {
    }
    
    }
    
    add_action( 'widgets_init', 'fw_load_widgets' );
    function fw_load_widgets() {
    register_widget('flickr_widget');
    }

Step 2 – Making the form.

Before we can make the widget form we need to figure out the input fields that we will use in this widget.

We will need a text filed for the title, the Flicker id and the number of items to display. Copy and paste the code in the form() function.

	$title = esc_attr($instance['title']);
    $flickr_user_id = esc_attr($instance['flickr_user_id']);
    $flickr_img_limit= esc_attr($instance['flickr_img_limit']);
    ?>
    <p><label for="<?php echo $this->get_field_id('title'); ?>"><?php _e('Title:'); ?> <input id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" /></label></p>
    <p><label for="<?php echo $this->get_field_id('flickr_user_id'); ?>"><?php _e('Enter Flickr ID:'); ?> <input id="<?php echo $this->get_field_id('flickr_user_id'); ?>" name="<?php echo $this->get_field_name('flickr_user_id'); ?>" type="text" value="<?php echo $flickr_user_id; ?>" /></label></p>
    <p><label for="<?php echo $this->get_field_id('flickr_img_limit'); ?>"><?php _e('Enter Flickr Image Number:'); ?> <input id="<?php echo $this->get_field_id('flickr_img_limit'); ?>" name="<?php echo $this->get_field_name('flickr_img_limit'); ?>" type="text" value="<?php echo $flickr_img_limit; ?>" /></label></p>
    <?php

Step 3 – Making the form update.

To make the form update, you will need to setup your update() function. This should be very easy, by default WordPress sends two parameters in this function the new and the old instance. You don’t need to use the old instance since we don’t have values that we don’t want to change. Go ahead and paste this code in the update() function.

	return $new_instance;

Step 4 – Creating the costume function.

In the enclosure of the class we can add more functions then just the skeleton ones that can be used in the widget.

To make the code cleaner we can go and crate a function that will interact with the Flicker API and use it in the widget when required.

Go ahead and copy/paste the getFlickrs() function bellow the widget function.

	function getFlickrs($flickr_user_id, $flickr_img_limit = 10){
    $flickr_rss_url;
    if( file_exists( ABSPATH . WPINC . '/rss.php') ) {
    require_once(ABSPATH . WPINC . '/rss.php');
    } else {
    require_once(ABSPATH . WPINC . '/rss-functions.php');
    }
    if($flickr_user_id !=""){
    $flickr_rss_url = empty($options['flickr_rss_url']) ? __('http://flickr.com/services/feeds/photos_public.gne?id='.$flickr_user_id.'&format=rss_200') : $options['flickr_rss_url'];
    }
    if ( empty($items) || $items < 1 || $items > 10 ) $items = $flickr_img_limit;
    $rss = fetch_rss( $flickr_rss_url );
    if( is_array( $rss->items ) ) {
    $out = "";
    $items = array_slice( $rss->items, 0, $items );
    $nub = 0;
    while( list( $key, $photo ) = each( $items )  ) {
    preg_match_all("/<IMG.+?SRC=[\"']([^\"']+)/si",$photo[ 'description' ],$sub,PREG_SET_ORDER);
    $photo_url = str_replace( "_m.jpg", "_t.jpg", $sub[0][1] );
    if($nub == 2){
    $nub = 0;
    $out .= "<li class='margin-0'><a href='{$photo[ 'link' ]}'><img alt='".wp_specialchars( $photo[ 'title' ], true )."' title='".wp_specialchars( $photo[ 'title' ], true )."' src='".$photo_url."' border='0' width='75'></a></li>";
    continue;
    }else{
    $out .= "<li><a href='{$photo[ 'link' ]}'><img alt='".wp_specialchars( $photo[ 'title' ], true )."' title='".wp_specialchars( $photo[ 'title' ], true )."' src='".$photo_url."' border='0' width='75'></a></li>";
    }
    
    $nub ++;
    }
    }
    return $out;
    }

This function will receive two parameters, the id and the number of items $flickr_user_id, $flickr_img_limit.

In the function we need to include the WordPress rss file and create the flicker url variable.

After that we just loop thru the rss items and print out the html.

Step 5 – Making everything work.

The final step is to make the widget function print out our html.

Everything here is self explanatory and you need just to copy and paste the code in the widgets() function.

	$title = apply_filters('widget_title', $instance['title']);
    if ( empty($title) ) $title = false;
    if($title){
    echo $before_title;
    echo $title;
    echo $after_title;
    }
    echo $before_widget;
    
    if($instance['flickr_user_id'] != ""){
    echo $this->getFlickrs($instance['flickr_user_id'], $instance['flickr_img_limit']);
    }else{
    echo "Enter Flickr ID.";
    }
    echo $after_widget;

If you have nice images and you want to show it in your blog then this is a nice way of doing that.

Bookmark and Share

In the second part of this tutorial we will extend the widget with more options. Let’s start by defining what sort of options we want it to have.

  • Show timestamps
  • Discover Hyperlinks
  • Discover @replies
  • Discover avatar
  • Followers count

You can download the extended plug-in here.

Step 1: Getting the form ready for the new options

First of all we need to create the new options in the widget. Find the form() function and add the new form fields to it. Copy the code and add it at the end of the HTML.

<p><label for="<?php echo $this->get_field_id('timestamps'); ?>"><?php _e('Show timestamps:'); ?> <input id="<?php echo $this->get_field_id('timestamps'); ?>" name="<?php echo $this->get_field_name('timestamps'); ?>" type="checkbox" <?php if($timestamps!=""){ echo "checked='checked'"; } ?> /></label></p>
<p><label for="<?php echo $this->get_field_id('hyperlinks'); ?>"><?php _e('Discover Hyperlinks:'); ?> <input id="<?php echo $this->get_field_id('hyperlinks'); ?>" name="<?php echo $this->get_field_name('hyperlinks'); ?>" type="checkbox" <?php if($hyperlinks!=""){ echo "checked='checked'"; } ?> /></label></p>
<p><label for="<?php echo $this->get_field_id('replies'); ?>"><?php _e('Discover @replies:'); ?> <input id="<?php echo $this->get_field_id('replies'); ?>" name="<?php echo $this->get_field_name('replies'); ?>" type="checkbox" <?php if($replies!=""){ echo "checked='checked'"; } ?> /></label></p>
<p><label for="<?php echo $this->get_field_id('avatar'); ?>"><?php _e('Discover avatar:'); ?> <input id="<?php echo $this->get_field_id('avatar'); ?>" name="<?php echo $this->get_field_name('avatar'); ?>" type="checkbox" <?php if($avatar!=""){ echo "checked='checked'"; } ?> /></label></p>

These are all check boxes that will turn on/off the options in the widget.

Step 2: Making Sure Your Form is Saving the new options

To make the form save the new options that we added in the html we need to edit the form() and update() functions.

In the form() function add this in the code before the html of the form.

$timestamps = esc_attr($instance['timestamps']);
$replies = esc_attr($instance['replies']);
$hyperlinks = esc_attr($instance['hyperlinks']);
$avatar = esc_attr($instance['avatar']);

In the update function add this code just before return $instance;

$instance['timestamps']=$new_instance['timestamps'];
$instance['replies']=$new_instance['replies'];
$instance['hyperlinks']=$new_instance['hyperlinks'];
$instance['avatar']=$new_instance['avatar'];

Step 3: Creating the set of functions for the options

To make the new options we need to extend the BS_Twitter class by adding the new set of functions. All of the new functions will be added after the widget() function.

function bs_tweeter_hyperlinks($text) {

$text = preg_replace('/\b([a-zA-Z]+:\/\/[\w_.\-]+\.[a-zA-Z]{2,6}[\/\w\-~.?=&%#+$*!]*)\b/i',"<a href=\"$1\" class=\"twitter-link\">$1</a>", $text);

$text = preg_replace('/\b(?<!:\/\/)(www\.[\w_.\-]+\.[a-zA-Z]{2,6}[\/\w\-~.?=&%#+$*!]*)\b/i',"<a href=\"http://$1\" class=\"twitter-link\">$1</a>", $text);

$text = preg_replace("/\b([a-zA-Z][a-zA-Z0-9\_\.\-]*[a-zA-Z]*\@[a-zA-Z][a-zA-Z0-9\_\.\-]*[a-zA-Z]{2,6})\b/i","<a href=\"mailto://$1\" class=\"twitter-link\">$1</a>", $text);

$text = preg_replace('/([\.|\,|\:|\Ў|\ї|\>|\{|\(]?)#{1}(\w*)([\.|\,|\:|\!|\?|\>|\}|\)]?)\s/i', "$1<a href=\"http://twitter.com/#search?q=$2\" class=\"twitter-link\">#$2</a>$3 ", $text);

return $text;

}

function bs_tweeter_users($text) {

$text = preg_replace('/([\.|\,|\:|\Ў|\ї|\>|\{|\(]?)@{1}(\w*)([\.|\,|\:|\!|\?|\>|\}|\)]?)\s/i', "$1<a href=\"http://twitter.com/$2\" class=\"twitter-user\">@$2</a>$3 ", $text);

$text =  preg_replace('/(^|\s)#(\w+)/', '\1#<a href="http://search.twitter.com/search?q=%23\2">\2</a>', $text);

return $text;

}

function bs_string_remover($tweet, $username) {

$string_length = strlen($username);

$tweet = substr_replace($tweet, '', 0, $string_length+1);

return $tweet;

}

function bs_twitter_followers_counter($username, $cache) {

$cache_file = $cache."/".md5($username);

if (is_file ( $cache_file ) == false) {

$cache_file_time = strtotime ( '1984-01-11 07:15' );

} else {

$cache_file_time = filemtime ( $cache_file );

}

$now = strtotime ( date ( 'Y-m-d H:i:s' ) );

$api_call = $cache_file_time;

$difference = $now - $api_call;

$api_time_seconds = 3600*24;

if ($difference >= $api_time_seconds) {

$api_page = 'http://twitter.com/users/show/' . $username;

$xml = file_get_contents ( $api_page );

$profile = new SimpleXMLElement ( $xml );

$count = $profile->followers_count;

if (is_file ( $cache_file ) == true) {

unlink ( $cache_file );

}

touch ( $cache_file );

file_put_contents ( $cache_file, strval ( $count ) );

return strval ( $count );

} else {

$count = file_get_contents ( $cache_file );

return strval ( $count );

}

}

function bs_relative_time( $timestamp ){

if( !is_numeric( $timestamp ) ){

$timestamp = strtotime( $timestamp );

if( !is_numeric( $timestamp ) ){

return "";

}

}

$difference = time() - $timestamp;

$periods = array( "sec", "min", "hour", "day", "week", "month", "years", "decade" );

$lengths = array( "60","60","24","7","4.35","12","10");

if ($difference > 0) { // this was in the past

$ending = "ago";

}else { // this was in the future

$difference = -$difference;

$ending = "to go";

}

for( $j=0; $difference>=$lengths[$j] and $j < 7; $j++ )

$difference /= $lengths[$j];

$difference = round($difference);

if( $difference != 1 ){

$periods[$j].= "s";

}

$text = "$difference $periods[$j] $ending";

return $text;

}

function bs_cache_avatar($username){

$cache_file =ABSPATH.'wp-content/plugins/bs_twitter/cache/'.md5($username).'.jpg';

if (is_file ( $cache_file ) == false) {

$cache_file_time = strtotime ( '1984-01-11 07:15' );

} else {

$cache_file_time = filemtime ( $cache_file );

}

$now = strtotime ( date ( 'Y-m-d H:i:s' ) );

$api_call = $cache_file_time;

$difference = $now - $api_call;

$api_time_seconds = 3600*24;

if ($difference >= $api_time_seconds) {

$xml = simplexml_load_file("http://twitter.com/users/".$username.".xml");

$ch = curl_init($xml->profile_image_url);

$fp = fopen($cache_file, "w");

curl_setopt($ch, CURLOPT_FILE, $fp);

curl_setopt($ch, CURLOPT_HEADER, 0);

curl_exec($ch);

curl_close($ch);

fclose($fp);

}

return get_bloginfo('url').'/wp-content/plugins/bs_twitter/cache/'.md5($username).'.jpg';

}

Let’s take a look at the functions one by one.

  • bs_tweeter_hyperlinks – will discover the hyperlinks in the content of the tweet and add the link to it.
  • bs_tweeter_users – will discover the users in the tweet content and add the link to the users profile on twitter.
  • bs_string_remover – will remove the users from the content when needed.
  • bs_twitter_followers_counter – is a function that will display the followers number also cache it so we don’t send requests to the twitter api every time we refresh the page on the front end
  • bs_relative_time – shows the tweet time in relative time.
  • bs_cache_avatar – displays your avatar before every tweet and also stores the image locally on your site.

Step 4: Displaying the new set of functionalities on the front end

In the widget function we need to change the code so we can display the new set of options that we created. To do this we will change the function completely. Just copy and paste the new widget function over the existing one.

function widget($args, $instance) {

extract($args);

$title = apply_filters('widget_title', $instance['title']);

if ( empty($title) ) $title = false;

$twitter_username = trim($instance['twitter_username']);

$number = absint( $instance['number'] );

$timestamps = esc_attr($instance['timestamps']);

$replies = esc_attr($instance['replies']);

$hyperlinks = esc_attr($instance['hyperlinks']);

$avatar = esc_attr($instance['avatar']);

$cache_path = ABSPATH.'wp-content/plugins/bs_twitter/cache';

if($title){

echo $before_title;

echo $title;

echo ' - <small>'.$this->bs_twitter_followers_counter($twitter_username, $cache_path)." Followers</small>";

echo $after_title;

}

echo $before_widget;

if (class_exists('SimplePie')) {

$feed = new SimplePie();

$feed->set_feed_url('http://www.twitter.com/statuses/user_timeline/'.$twitter_username.'.rss');

$feed->set_cache_location($cache_path);

$feed->enable_cache(true); //disable caching

$feed->set_cache_duration(1800); //The number of seconds to cache for. 60 is 1 minute, 600 is 10 minutes, 900 is 15 minutes, 1800 is 30 minutes.

$feed->set_timeout(50);

$success = $feed->init();

$feed->handle_content_type();

if ($success):

echo "<ul class='bs_twitter_feed'>";

foreach ($feed->get_items(0, $number) as $item):

if ($item) {

?>

<li>

<?php

$content = $this->bs_string_remover($item->get_title(), $twitter_username);

if($hyperlinks!=""){

$content=$this->bs_tweeter_hyperlinks($content);

}

if($replies!=""){

$content=$this->bs_tweeter_users($content);

}

if($avatar !=""){

echo '<div><a href="'.$item->get_permalink().'"><img src="'.$this->bs_cache_avatar($twitter_username).'" /></a></div>';

}

echo $content;

if($timestamps!=""){

echo '<span><abbr title="'.$item->get_date().'">'.$this->bs_relative_time(strtotime($item->get_date())).'</abbr></span>';

}

?>

</li>

<?php

} // end if there is an item

endforeach;

echo "</ul>";

if($twitter_username !=""){

echo "<a class='follow' href='http://twitter.com/".$twitter_username."'>More ...</a>";

}

endif; //success

}

echo $after_widget;

}

That’s it! You can take a look at the new code and if you have any questions feel free to comment bellow.

Bookmark and Share

There are a lot of Twitter widgets for WordPress but in my experience none of those utilize the powerful SimplePie PHP class that is in the WordPress core. SimplePie is a powerful RSS reader class that has very nice built-in caching system since as we all know the Twitter API is limited to only 150 requests per hour creating problems with high traffic websites.

You can download the plug-in here.

Step 1: Getting the plug-in ready

Create a folder and name it bs_twitter. In that folder, create a PHP file and name it the same as the folder i.e. bs_twitter. Also, in the bs_twitter folder create a folder and name it cache. This will be the main plug-in file. Now, include the SimplePie class and add the activation/deactivation hooks for the plug-in.

register_activation_hook(__FILE__, 'bs_twitter_activate');
register_deactivation_hook(__FILE__, 'bs_twitter_deactivate');
if ( file_exists(ABSPATH . WPINC . '/class-feed.php') ) {
	@require_once (ABSPATH . WPINC . '/class-feed.php');
}
function bs_twitter_activate () {
}
function bs_twitter_deactivate () {
}

Step 2: Have the widget code prepared

Starting from WordPress 2.8, creating a widget has become easier with the widget API. This code needs to be pasted to the widgets.php file:

• BS_Twitter is both the name of the class, as well as the name of the first function (the constructor). The constructor contains the code needed to setup the widget – it’s called Twitter Posts.

• form() generates the form that you see in the widget management page in WordPress.

• update() updates the options you enter in the form when the widget configuration is saved.

• widget() displays the actual output of the widget in the main site.

• The last part of the code hooks into WordPress’ widget initialization and instructs it to register your widget

class BS_Twitter extends WP_Widget {
	function BS_Twitter() {
		$widget_ops = array( 'classname' => 'twitter_widget', 'description' => 'Show your latest Tweets' );
				$this->WP_Widget( 'twitter_widget', 'Twitter Posts', $widget_ops);
	}
	function form($instance) {
	}
	function update($new_instance, $old_instance) {
	}
	function widget($args, $instance) {
	}
}
add_action( 'widgets_init', 'bs_load_widgets' );
function bs_load_widgets() {
	register_widget('BS_Twitter');
}

Step 3: Creating the form

First thing that needs to be done even before you create the form for a widget, you must determine the type of inputs you need. For this specific widget, 3 inputs are needed: title for the widget, Twitter username, and number of tweets to be displayed. If you look at the basic code above, in the form() function you will find a parameter $instance. This basically contains the current values for all inputs in the form (for example, when you save the form with certain values). Therefore, it is needed to pull out the current values of the widgdet and populate the widget input fields with them.

$instance = wp_parse_args( (array) $instance, array('title' => 'Twitter', 'number' => 5, 'twitter_username' => 'abuzz') );
$title = esc_attr($instance['title']);
$twitter_username = $instance['twitter_username'];
$number = absint($instance['number']);
?>
<p>
<label for="<?php echo $this->get_field_id('title'); ?>"> Title: </label>
<input id="<?php echo $this->get_field_id('title'); ?>" name="<?php echo $this->get_field_name('title'); ?>" type="text" value="<?php echo $title; ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('twitter_username'); ?>"> Twitter username: </label>
<input id="<?php echo $this->get_field_id('twitter_username'); ?>" name="<?php echo $this->get_field_name('twitter_username'); ?>" type="text" value="<?php echo $twitter_username; ?>" />
</p>
<p>
<label for="<?php echo $this->get_field_id('number'); ?>"> Number of twits: </label>
<input id="<?php echo $this->get_field_id('number'); ?>" name="<?php echo $this->get_field_name('number'); ?>" type="text" value="<?php echo $number; ?>" />
</p>
<?php

Maybe this seems as heavy code, but it actually is very simple. It creates a HTML form containing several changes. Instead of using id’s and name’s, you have to use get_field_id(). This needs to be done because if there are multiple instances of a widget and only one single ID, there will be errors. WordPress takes care of it for you if you use the said function. The other thing is that the value of the input fields is generated using PHP.

Step 4: Making Sure Your Form is Saved

To make sure your form updates, you need to configure your update() function. This is very simple. By default, WordPress gives 2 parameters – the old instance, and the new instance. We basically don’t really need the old instance because the old instance is only used if there are values that you may not want to change. Paste in this code into the update() function:

$instance=$old_instance;
$instance['title'] = strip_tags($new_instance['title']);
$instance['twitter_username']=$new_instance['twitter_username'];
$instance['number']=$new_instance['number'];
return $instance;

Step 5: Output the Widget HTML

This is the final step, and it makes sure you widget displays HTML on the front end. Now that we have the user inputs set up, we can just use the inputs to communicate with the Twitter API and display tweets. The first step in the widget() function is to get the values of the user inputs. Copy and paste this code:

extract($args);
$title = apply_filters('widget_title', $instance['title']);
if ( empty($title) ) $title = false;
$twitter_username = $instance['twitter_username'];
$number = absint( $instance['number'] ); 
if ( empty($twitter_username) ) return;

Once this is done, paste this code:

if($title){
echo $before_title;
echo $title;
echo $after_title;
}
echo $before_widget;
if (class_exists('SimplePie')) {
$feed = new SimplePie();
$feed->set_feed_url('http://www.twitter.com/statuses/user_timeline/'.$twitter_username.'.rss');
$feed->set_cache_location(ABSPATH.'wp-content/plugins/bs_twitter/cache');
$feed->enable_cache(true); //disable caching
$feed->set_cache_duration(1800); //The number of seconds to cache for. 60 is 1 minute, 600 is 10 minutes, 900 is 15 minutes, 1800 is 30 minutes.
$feed->set_timeout(50);
$success = $feed->init();
$feed->handle_content_type();
if ($success):
echo "<ul>";
foreach ($feed->get_items(0, $number) as $item):
if ($item) {
?>
<li>
<a href="<?php echo $item->get_permalink(); ?>">
<?php echo $item->get_title() ?>
</a>
</li>
<?php
} // end if there is an item
endforeach;
echo "</ul>";
endif; //success
}
echo $after_widget;

This is a great plug-in for those who have high-traffic websites. This tutorial makes it easier to create customized Twitter widget. Options can be added and change to suite your needs.

This is just the first tutorial of the series that is coming up in the next period. We will explain how to customize this widget and adding more features such as adding the user avatar, discovering hyperlinks and hashtags and much more.

Bookmark and Share

We all saw that how Osama’s death video malware was spreading on Facebook recently and created lot of trouble for the social network users. It’s sad to see that how anti-social elements are trying to socialize in their own manner! Anyway, I’m fully aware of such nasty tricks, so thankfully I didn’t become a victim, moreover, I keep myself safe with the help of fantastic software utilities by some fantastic individuals & companies! Let me share that how I keep myself safe from malicious websites and then I’ll share that how as a blogger/webmaster you should take the responsibility to keep your visitors safe.

Tools to keep yourself safe from malicious websites

1. Internet security softwares – There are some amazing internet security software both paid & free that are doing a fantastic job in keeping the users safe. I personally use Comodo’s free internet security software – even though it’s free – it’s got much more features and has better detection rate than even most popular paid internet security softwares! It’s got antivirus, antimalware, firewall, sandbox technology and what not, I recommend it to everyone.

2. Secure DNS solutionsOpenDNS, Comodo’s secure DNS are some of those services that deserve all the respect in the world! By just making small changes in your internet connection’s DNS settings, you can do tons of good to yourself! These services have a database of malicious and phishing websites and will automatically block them even if you happen to click on a dangerous link. I prefer Comodo’s secure DNS.

3. Web of TrustWeb of Trust is another such service that alerts you about the site’s reputation and the dangers associated with it. Facebook partnered with them, to alert it’s users for bad & dangerous links after it was raided by “social anti-social elements”. They have a plugin for major browsers which alerts users for bad links. It’s a must have for everyone!

4. McAfee SiteAdvisor – I’d be honest, I used to love Siteadvisor like anything, I still love it as it saves me from going to unreliable links and even shows the website’s reputation in search engine and thus allowing me to avoid possibly dangerous websites (It’s very much similar to Web Of Trust). However, now McAfee also install it’s toolbar and changes the search engine – that’s something it didn’t do earlier and I loved that way. Anyway, you can disable those things – so it still has my respect. It integrates well with major browsers and can be a great savior as you can see that which link can be dangerous even before you click it.

5. Sandboxie – Even though Comodo offers sandbox technology, I prefer to use Sandboxie. It’s a free tool that runs your programs in an isolated space which prevents them from making permanent changes to other programs and data in your computer. Check out the Sandboxie’s website to know more about this fantastic concept! Again, it’s a must have!

These tools keep my pretty much safe from most of the threats and I’m thankful to the wonderful developers who’ve made them.

Be a responsible blogger and secure your WordPress now!

As a user, I was safe however as a webmaster, the incident got me thinking that how blogs and websites can also be targeted by malware & virus makers, not that they haven’t done in the past, however – this is where I see it growing even more and a much faster rate! There is a flurry of automated comment submitting softwares in the market, any malware maker can host the malware on a website and then submit the comments with that malicious link on thousands of blogs in a matter of minutes and an ignorant blogger/webmaster can approve the comment which may result in the following -

  • Infect website/blog readers’ computers.
  • Reduce site’s ranking in Google – Google doesn’t like site that promote malware!
  • Bad reputation of website amongst visitors.

These are some points that no blogger would like to see happening to them. I certainly wouldn’t want this happening to me either. So, I decided to find a tool that would alert me of a malicious link before I approve any comment or which scans the links in the comments & posts and gives a report so that I can take corrective measures against those links. Unfortunately, I couldn’t find one!

Then it hit me that why are security companies not making such a tool? Tools like Web of Trust, Siteadvisor, OpenDNS, Comodo’s secure DNS depend a lot on community’s feedback, they certainly are useful and keep people safe, however it takes some time before the community gets to know of a newly created malicious website, what if you visit those sites before they are marked as unsafe? Wouldn’t it be cool if the security companies made a tool, that integrates with famous content management systems like WordPress & Drupal and shows the reputation of outgoing links to the visitor before hand? Not only this will be a win-win situation for bloggers, webmasters & readers; it’ll be a win-win situation for the antivirus company as well -

  • Tons of free data about links. This will only strengthen their commercial offerings! They can directly block dangerous links for their software users.
  • Free marketing – If not for the data, they can at least get the free marketing about their company! If they’ll show reputation of the link then they can always show the following message below it – “Link’s safety checked by XYZ Security Tool“. As a webmaster, I wouldn’t mind such a message, as it’ll strengthen my reputation amongst my readers that I care for them!

I’d given up looking for the tool and had started hoping that some security company will come up with such a tool that’ll show me link security report and will also show the reputation of out going links to my readers. And well, then I came across BitDefender’s Antispam! It’s almost the tool that I was expecting and that too from a popular and reputed security company!

Why Bitdefender Antispam when I’ve got Akismet?

That’s the first question that came in mind when I read the plugin’s name, however I was super happy to find out that it’s almost doing the same thing that I was thinking about, it’s just that it doesn’t take the advantage of free marketing & doesn’t scan the links in the posts. Bitdefender has made this essentially an anti-spam plugin, however I think it’ll gain the edge over Akismet as it will also check if the links are malicious or are phishing sites. The plugin is in beta and doesn’t appeal in terms of usability at all, however I’m still running it for few weeks to see how well it performs in terms of detecting the spam! Of course, I’ll be sharing my experience in the next blog post. Installation instructions for Bitdefender Antispam. Will I suggest the plugin now? Like other security tools that I’ve recommended, I won’t recommend this for now – it certainly needs a face-lift! However, I’m sure by the time it’ll be out of Beta, it should be one of your anti-spam solutions.

Secure WordPress to avoid stupid hacks & avoid becoming owner of a malicious website!

There have been lot of posts written about as to how one can secure WordPress, I’ve covered this topic as much as I could. The guides that we’ve included will not be the ultimate solution for making the site un-hackable, however by following them you’ll save yourself from automated attacks and newbie hackers who try and hack websites for fun. Please follow these links to make your WordPress secure -

I hope that other security companies take inspiration from Bitdefender and well my marketing tip and come up with such powerful tools for webmasters. This way together we’ll be able to make internet a bit safe! After all, we’ll be able to block them at source itself! And I hope that if you’ve not taken steps to secure your WordPress installation, then you would do them right after you share this post on social networks ;)

Bookmark and Share

jetpack

Automattic team has yet again proven that why they are such a brilliant and innovative company! This time around they’ve come up JetPack, an innovative idea for a plugin that presents their hosted add-on services of WordPress.com to millions of self-hosted WordPress (wordpress.org) installs across the web.

To put it up simply, its a plugin that bridges the gap between the features offered exclusively to WordPress.com users and self-hosted WordPress installs. Here’s what Scott Berkun himself said in his announcement post -

WordPress.com has grown into one of the most amazing cloud architectures in the world. This has enabled blogs hosted here to have features unavailable on self-hosted WordPress installs. This makes us sad, since here at WordPress.com we want every WordPress install everywhere to be amazing.

Once you install JetPack on your self-hosted WordPress install, you’ll get these additional features on your own WordPress-

  • Gravatar Hovercards – A Gravatar is your profile on the web, and the Hovercard is one way your information is made visible to others. It’s an easy way to help people find your blog, or access your identity on other services like twitter, facebook, or linkedin
  • WordPress.com Stats – All blogs on WordPress.com get our Stats as a free feature. Every time a visitor views a URL on your blog, the visitor’s web browser loads a small smiley-face image from our stats system. The action is logged and the logs are summarized every few minutes to update the statistics, graphs, charts, and lists
  • Twitter Widget – Twitter widget allows you to display Twitter feed in your blog’s sidebar or where ever widgets are supported in the theme
  • Shortcodes – Shortcodes allow you to easily and safely embed media from other places in your site. With just one simple code, you can tell WordPress to embed YouTube, Flickr, and other media. Enter a shortcode directly into the Post/Page editor to embed media. For specific instructions follow the links below.Available shortcodes are: archives, audio, blip.tvdailymotion, digg, flickrgooglevideo, scribd, slide, slideshare, soundcloud, vimeo, youtube, and polldaddy
  • Shortlinks - You may already be using one of the popular URL shorteners, such as bit.ly or TinyURL, to publish links on Twitter or other services. WordPress.com has its own URL shortening feature, wp.me, so that you can quickly and easily get shortened links to your blog posts and pages and share them to the world
  • Sharing – At the bottom of each post and page you can now include sharing buttons for your readers to share your content across a range of social networks/services.
  • Latex – WordPress.com supports Latex, a typesetting system that’s really good at formatting mathematical formulas and equation and finally ….
  • Proofreading – WordPress can check your spelling, grammar, and style using After the Deadline Proofreading technology.

At the time of the launch, above mentioned features are available and more features will be added in future. Well, these features are completely free although we can assume that it will also help Automattic to promote their freemium services like VideoPress, PollDaddy, Akismet and since it can be a single bridge between WordPress.com & millions of self hosted WordPress installs across the web, it has the power to become a very powerful & big platform only if Automattic decides to make WordPress.com anything like Facebook by combing all of its services listed on its homepage. Well, I would like to surely explain that in my next post Smile. For now, I would insist that you should install it as soon as possible as this is one hell of plugin!

Bookmark and Share

WordPress For Windows

Microsoft has always been criticized for not adhering to Open standards and not being active in Open-source community. However, it looks like Microsoft has tried a fair bit of things to ensure that their products work well with popular web applications. I personally believe that Microsoft’s web servers aren’t good enough for PHP/MySQL driven websites and moreover, the security concern is one of the biggest factors to avoid Microsoft Windows. When Linux servers aren’t safe then no doubt, it’ll be a bigger pain to manage Windows Servers for security.

Security is another topic, coming back to the point of Microsoft & WordPress, I was a bit surprised to see how Microsoft has bundled WordPress in Web Platform Installer along with various other popular web applications like Drupal, Joomla etc. Check out the list of application in the gallery. Although, I was happy to see that Microsoft has made this move, this should give confidence to those who find working with Linux web servers and web applications a bit difficult.

Microsoft & WordPress technologies shake hands!

1. WordPress on SQL Server : With the help of IIS 7, SQL Server Express and WordPress on SQL Server distribution, its possible to run WordPress easily on Windows Vista, Windows 7 etc. It’s not the simplest way to install it, however this great guide by Zach Skyles Ownes should take you home.

2. SilverLight Gallery Plugin – Microsoft has been trying hard to make SilverLight popular among developers and end users. This plugin can surely help them achieve this goal. If this plugin gets adopted by bloggers, then the end users will have to install SilverLight in order to ensure that they can view the image gallery on their browsers.

3. SilverLight Bing Maps – This plugin integrates SilverLight & Bing Maps with WordPress. This plugin lets bloggers to put their location with interactive maps like Google Maps on their blog.

4. Windows Azure Storage for WordPress – This plugin lets WordPress users to store their media files and static files on Windows Azure platform whose more popular alternatives are Amazon Web Services or Rackspace Cloud Files.

Why is Microsoft doing this?

The first question that comes in mind that why is Microsoft trying to make its technologies work with WordPress, Drupal or other PHP/MySQL driven web applications. Well, Zach has already answered this question -

I’m a PHP-bred Technical Evangelist at Microsoft, and I love the fact that PHP now runs great on Windows, SQL Server, Windows Azure and SQL Azure.  It’s exciting to see how Microsoft technology can light up WordPress, whether it’s through Silverlight image gallery plugins, Bing Maps integration or future opportunities with technologies like our information service, Dallas.

Business sense says that Microsoft is using these popular web applications to make its existing or new technologies popular amongst end users, bloggers and developers. However, the interesting part will be to see that how many bloggers & developers [the ones not sold to Microsoft's technology] will be keen in adopting these? I personally welcome this move by Microsoft, although practically I doubt that I would use any of these technologies as I’m already comfortable with the setup that I currently have. What do you think about this move from Microsoft?

Bookmark and Share