Bookmark and Share
Sarvottom - The Best Check Google Page Rank Locations of visitors to this page

Tuesday, June 23, 2009

Create a wordpress widget

This tutorial will explain how to create Wordpress widget from scratch. We will make widget using PHP5 OOP. You will also learn how to implement configuration page for your widget.

Getting started

You should already have Wordpress installed, either on your local machine or on a testing server. For this tutorial we will use the Wordpress version 2.7. You should also have a theme that support widgets. You could use the default one or make a wordpress theme from scratch and widgetize it.

Widget name

The first task in creating a Wordpress widget is to think about what the widget will do, and make a (hopefully unique) name for your widget. Check out Plugins and the other repositories it refers to, to verify that your name is unique; you might also do a Google search on your proposed name. The name can be multiple words.

Widget files

We will start by creating a folder widget-name in our wp-content/plugins/ directory, where Wordpress stores all it’s plugins. It’s a good idea to always create a folder for your plugin, even if it consists only of 1 file, so you could add more files later.

The next step is to create our main widget file widget-name.php. To make Wordpress recognize it as a plugin we should add a specific header to it, that describes our widget.

Widget header

php

/*
Plugin Name: Name Of The Plugin
Plugin URI: http://URI_Of_Page_Describing_Plugin_and_Updates
Description: A brief description of the Plugin.
Version: The Plugin's Version Number, e.g.: 1.0
Author: Name Of The Plugin Author
Author URI: http://URI_Of_The_Plugin_Author
*/

?>

Our widget should appear in Wordpress administration area in inactive plugin list. Information about your widget will be extracted from the header of a main widget file. To continue developing our widget we must activate our plugin by clicking Activate to the right of the plugin entry.

Activate plugin

Creating widget structure

There are different ways to create a Wordpress widget. I prefer creating it as a static class, but the downside of this method it that our widget will support php5 only, anyway I believe, that support for php4 can already be dropped. So let’s create our main class, that will contain all widget methods.

error_reporting(E_ALL);

add_action
("widgets_init", array('Widget_name', 'register'));
class Widget_name {
function control(){
echo
'I am a control panel';
}
function widget($args){
echo $args
['before_widget'];
echo $args
['before_title'] . 'Your widget title' . $args['after_title'];
echo
'I am your widget';
echo $args
['after_widget'];
}
function register(){
register_sidebar_widget
('Widget name', array('Widget_name', 'widget'));
register_widget_control
('Widget name', array('Widget_name', 'control'));
}
}

Our plugin should not throw any level errors (even notices), so we should turn error reporting on while we are developing. We will remove this line when the widget will be finished.

The add_action function hooks our register method to an widgets_init event. You can read about it in Wordpress codex. It takes the action hook name as its first parameter and the callback function as a second parameter. You should definitely read about callbacks in php manual.

To make widget appear in widgets menu in Wordpress we must register them first, we do that with our register method which creates a widget itself and a control panel for it.

The before_widget, after_widget, before_title and after_title in widget method are required for compatibility with various themes.

Activate widget

Navigate to widgets page in administration area and activate it. To do that press add button next to your widget. It should appear at current widgets column, you can press edit button next to it too see the control panel. Don’t forget to press save changes button!

The text from your widget method should appear in your blog sidebar.

Your widget in sidebar

Saving Widget Data to the Database

Most WordPress Widgets will need to get some input from the site owner or blog users and save it between sessions, for use in its filter functions, action functions, and template functions. This information has to be saved in the WordPress database, in order to be persistent between sessions. There are two basic methods for saving Widget data in the database.

WordPress Options

This method is appropriate for storing relatively small amounts of relatively static, named pieces of data - the type of data you’d expect the site owner to enter when first setting up the Widget, and rarely change thereafter. Option values can be strings, arrays, or PHP objects (they will be “serialized”, or converted to a string, before storage, and unserialized when retrieved). Option names are strings, and they must be unique, so that they do not conflict with either WordPress or other Plugins. Here are function you will need to modify options.

add_option($name, $value);

update_option
($name, $new_value);
delete_option
($name);

Create a custom database table

This method is appropriate for data associated with individual posts, pages, attachments, or comments — the type of data that will grow as time goes on, and that doesn’t have individual names. See Creating Tables with Plugins for information on how to do this.

Plugin Installation

If you need to install default data for your widget it is best to use activation hook. It takes 2 parameters. First one is a path to the main plugin file inside the wp-content/plugins directory. And the second one is the function to be run when the plugin is activated. Any of PHP’s callback pseudo-types will work. We will add activate method that will install default data for our widget.

error_reporting(E_ALL);

add_action
("widgets_init", array('Widget_name', 'register'));
register_activation_hook
( __FILE__, array('Widget_name', 'activate'));
register_deactivation_hook
( __FILE__, array('Widget_name', 'deactivate'));
class Widget_name {
function activate(){
$data
= array( 'option1' => 'Default value' ,'option2' => 55);
if ( ! get_option('widget_name')){
add_option
('widget_name' , $data);
} else {
update_option
('widget_name' , $data);
}
}
function deactivate(){
delete_option
('widget_name');
}
function control(){
echo
'I am a control panel';
}
function widget($args){
echo $args
['before_widget'];
echo $args
['before_title'] . 'Your widget title' . $args['after_title'];
echo
'I am your widget';
echo $args
['after_widget'];
}
function register(){
register_sidebar_widget
('Widget name', array('Widget_name', 'widget'));
register_widget_control
('Widget name', array('Widget_name', 'control'));
}
}

Creating widget control panel

We should use our control method for displaying and updating form with widget options. Here is a basic template for it.

function control(){

$data
= get_option('widget_name');
?>
<p><label>Option 1<input name="widget_name_option1"
type
="text" value="" /></label>p>
<p><label>Option 2<input name="widget_name_option2"
type
="text" value="" /></label>p>
php
if (isset($_POST['widget_name_option1'])){
$data
['option1'] = attribute_escape($_POST['widget_name_option1']);
$data
['option2'] = attribute_escape($_POST['widget_name_option2']);
update_option
('widget_name', $data);
}
}

You should be able to access it on the widgets page.
Widget options

Conclusion

I hope this tutorial gave you all the information you need to build your first Wordpress widget. If you have something to add or found an error, please feel free to post a comment below. And I want to add that Wordpress codex is a great source of information.
courtsy: http://valums.com


View blog reactions

Thursday, April 16, 2009

Create Custom WordPress Theme

In this tutorial, I will explain the basics of how WordPress theme works and show you how to convert a static HTML template into a theme. No PHP skill is required, but you need Photoshop and CSS skills to create your own design.

1. The Blog Frontend

Before you start, let’s take a look at the WordPress default theme and see how it is structured. Take note of the elements (header, post title, search form, navigation, footer, etc.).

Default Frontpage (index.php)

Default Single (single.php)

2. Photoshop Mockups

Based on the information gathered from the default theme, design a Photoshop mockup of your blog. Here I’m using GlossyBlue, one of my free WordPress themes, as an example.


3. HTML + CSS

After the PSD design is done, create a static HTML+CSS template of each page.

Why Create a Static HTML File First?

Mainly because it will make the development process a lot easier. I usually create a

HTML file for every template that I need, test it across all browsers, validate both HTML and CSS markups, then all I have to do is cut & paste the WordPress code. By doing so, I don’t have to worry about HTML or CSS bugs during my theme making process.

4. How WordPress Theme Works

If you go the default theme folder (wp-content/themes/default), you should see many PHP files (called template file) and one style.css file. When you are viewing the front page

, WordPress actually uses several template files to generate the page (index.php << header.php, sidebar.php, and footer.php).


5. Duplicate The Template Files

Copy the GlossyBlue HTML folder into the wp-content/themes folder. Then, go to the defaultcomments.php and searchform.php file to the glossyblue folder. theme folder, copy the

6. Style.css

Go to the WordPress default theme folder, open the style.css file. Copy the commented code at the top and paste it to the GlossyBlue style.css file. Change the theme name and the author information as you desire.

theme name and author's information

7. Splitting The Files

Now you need to understand where to split the file into several files: header.php, sidebar.php, and footer.php. The image below shows a simplified version of my index file and how the markups should split.

splitting files

8. Header.php

Open the index.html file. Cut from the top to where the ends, paste it in a new PHP file, and save the file as header.php.

header code

Go to the default theme folder, open the header.php. Copy and replace the tags where it requires PHP code (Template Tag): , stylesheet,

, and
.

replace code

Navigation Menu (wp_list_pages)

Replace the

  • tags in the
  • View blog reactions

    Thursday, March 26, 2009

    Sarvottom - The Best Open Source Web Development and BPO

    View blog reactions

    Monday, February 9, 2009

    Fiat Chooses PHP and Zend to build and web-enable their Fiatlink system

    Overview

    Fiat Group SpA is a diversified global company in business for over a century and is one of the top fifteen automobile manufacturers in the world, even larger than Daimler AG. Producing more than 85% of the automobiles that the Fiat Group manufactures and sells, the Fiat Group Automobiles SpA (FGA) subsidiary produces about 1.98 million automobiles/year. Over 42,000 Fiat users channel over $30 Billion (USD) in revenue (24 billion euros) through their PHP-based Fiatlink system which is now the primary access point for all of FGA's dealers and service centers to enter car orders and access information across the Fiat Auto enterprise. This is business-critical PHP.

    Improving sales performance and customer relations by exploiting back-end and point-of-use technology in the sales, service, and support processes they engage in was the goal for Fiat. Fiatlink addresses both sales and after sales that FGA processes, and currently handles 100% of the ordering and logistics and 65% (being rapidly built-out to 90%) of the vehicle customization & customer offers process, including essentially all CRM functions for Fiat, and will be completely rolled out to all of their markets in Europe in 2008.

    Originally slated to address just car ordering processes (customization of cars, ordering parts, etc.), Fiatlink is now used to additionally handle all dealer and FGA related processes from logistics to sales leads management, offering an integrated platform for all sales and post-sales processes.

    www.fiat.com
    The Challenge

    Fiat’s sales & customer support systems were not as up-to-date as Fiat innovation policies mandated, were spread across several disparate solutions, and there was no one place that all Fiat dealers and service centers could go to manage all the daily activities that are necessary for communication between FGA’s central headquarters and dealer services. Also, the previous system was built upon a traditional client-server model which meant long activation times, physical infrastructure maintenance problems, and very difficult to use user interfaces. This represented a significant drag on potential revenue opportunities for Fiat. They needed a way to rapidly develop and deliver new and enhanced functionality to their dealers. PHP was an ideal solution for this.

    “At the beginning we also considered Java as a development solution & language” says Roberto Fileni, Fiatlink’s Technical Architect, “but the main project goals were quick implementation and the PHP learning curve is much easier than with Java. In addition, Fiat Group’s IT division has a solid open-source technologies background. That also helped drive the choice for PHP.”
    The Business Case: Integrate 15 Disparate Applications into SSO Portal

    Fiat has integrated more than 15 different applications using PHP as the ‘glue’ to provide a responsive and integrated single-sign-on (SSO) portal for their 42,000 users to access myriad systems (B2C) in the Fiat Group Automobiles SpA enterprise. These include: logistics/planning systems, business management, training, CSI, post-sales support, warranties, marketing programs, CRM, and financing systems, both directly and in an integrated process environment.

    Because of the fast delivery that a PHP-based solution could provide to their Fiatlink users, Fiatlink is quickly becoming the primary way that all users interact with Fiat’s applications, worldwide.

    Fiat began with a LAMP-based prototype, but with the requirement that this needed to quickly be transformed into a production-ready business engineered solution. Porting to Oracle quickly after prototyping was another requirement. PHP fit their needs exactly. They are now building all of their code using web application “design pattern” standards like MVC, easy to do in PHP 5 where object-orientation is fully supported by the language and is now an industry standard practice for PHP.
    “When we performed a detailed analysis and were able to outline it in detail, we saw how widespread & diverse our user network of dealers and technical/service support users were, and that we needed to constantly adapt to, change, and create new and added features and functionality,” said Calì. “That’s the primary reason why we chose a PHP-based technology stack; PHP is a well-known language for building web-delivered solutions with versatility and reliability and that allows us to scale and build-out new functionality in a fraction of the time it would take us with other solutions.”
    -- Nunzio Calì,
    IT Director,
    Fiat Group Automobiles SpA
    The Bottom Line: Money & Time Saved Using Zend
    One of the key savings that Fiat Group Automobiles SpA made by using Zend’s web application server was the ability to save two (2) person-years worth of tested and already running Java business logic. Rewriting that code, not to mention testing and deploying it into a running application was untenable. Instead, by using Zend Platform, the Zend web application server, and the functionality it contains called Zend Java Bridge, Fiat was able to deploy their already tested and written Java business logic without needing to run an additional expensive WebSphere application server. This resulted in less moving parts to worry about, adminstrate, test, fix in production settings, and meant they also didn’t need to rewrite already running, tested code. Two person-years of code, plus testing, deployment, and administrative overhead: Estimated savings: €300,000 (USD ~ $450,000).

    Conclusion: PHP is ready for business-critical solutions
    PHP is an ideal solution for large, modern enterprises looking to rapidly deploy new and added functionality for their users. Adopting an open-source solution like PHP strategically knowing that in addition to the vibrant open-source community, Zend Technologies is also standing behind the platform provides peace-of-mind when utilizing open-source technology with lower TCO. Supporting tools like the Zend Studio IDE, the Zend application server and more, plus global services consulting and training from Zend's professional services experts all add up to make PHP more than ready for enterprise solutions.

    courtsy: http://www.zend.com
    View blog reactions

    Friday, January 30, 2009

    $10 PC from India soon

    NEW DELHI, INDIA: In an effort to bridge the digital divide and to take knowledge to every Indian household, the Government of India is set to make available low-cost computers at US$ 10, within six months. Once this becomes a reality, it would help students get feed on every subject while sitting home.

    Based on the technology developed by IISC, Bangalore and IIT Madras, the Rs 500 computer will be a small equipment with expandable memory, LAN and Wi-Fi facilities.

    "But lot of testing has to be done to ensure that the technology works properly. Once the testing is over, the computers will be made available on commercial basis. The target is to make it available in six months time," Higher Education Secretary, Ministry of HRD, R P Agrawal said reporters on Thursday.

    The government is also planning to produce e-content on every subject which will be made available free of cost, said reports.

    A prototype computer has been designed which is being tested now. "Its cost will be USD 10. If the parents want to gift something to their kids, they can easily purchase this item and gift them," Agrawal said.

    The low-cost computers are being developed under National Mission on Education through Information Communication Technology (ICT) and the Cabinet Committee on Economic Affairs (CCEA) has approved the scheme, he added.
    ©CyberMedia News
    View blog reactions