Welcome, Guest: Register On Nairaland / LOGIN! / Trending / Recent / New
Stats: 3,153,070 members, 7,818,196 topics. Date: Sunday, 05 May 2024 at 10:01 AM

Wordpress Plugin Development Tutorial - Programming - Nairaland

Nairaland Forum / Science/Technology / Programming / Wordpress Plugin Development Tutorial (4180 Views)

Programmers Exprienced In Joomla Plugin Development Needed / Developer Integrates Interswitch's Webpay With Wordpress Plugin / How Do I Protect My Wordpress Plugin From Being Pirated (2) (3) (4)

(1) (2) (Reply) (Go Down)

Wordpress Plugin Development Tutorial by talk2hb1(m): 4:09am On Aug 31, 2013
Hello Everyone
I am thinking of starting a tutorial on how to develop WordPress plugin, since every Cat and Ologbo is trying to own a blog and the most interesting part is that most people opt for the WordPress platform as their first choice of blogging software.
I don't know if anybody might be interested?
I need just 10 interested members on this forum to spur me on with the keyword: aye! aye!!.
Waiting for your response...............
Sanjuma!!!!!!!!
Re: Wordpress Plugin Development Tutorial by Nobody: 9:32am On Aug 31, 2013
Aye aye am eager to contribute
Re: Wordpress Plugin Development Tutorial by talk2hb1(m): 3:28pm On Aug 31, 2013
pc guru: Aye aye am eager to contribute
Yeah you are welcome to contribute, but we still need interested participants.
Re: Wordpress Plugin Development Tutorial by Nobody: 7:55pm On Aug 31, 2013
trust me you would be waiting for a long time, you'd see a bigger crowd if it had something mundane, that's what NL peeps like.
Re: Wordpress Plugin Development Tutorial by talk2hb1(m): 9:07am On Sep 01, 2013
Me Moral drop undecided undecided undecided
Me cry cry cry

Sanjuma!!!! thanks Ma Oga pc_guru
Re: Wordpress Plugin Development Tutorial by DharkPoet(m): 4:48pm On Sep 01, 2013
Aye Aye Aye captain
Re: Wordpress Plugin Development Tutorial by adewasco2k(m): 6:56pm On Sep 01, 2013
aye! aye!!
Re: Wordpress Plugin Development Tutorial by talk2hb1(m): 8:54pm On Sep 01, 2013
Me think you guys are not interested, we need at least two more aye! Aye!!
Me moral grin grin
Re: Wordpress Plugin Development Tutorial by curiouslad(m): 9:45pm On Sep 01, 2013
Aye! Aye!!

Hope PHP bashers don't come in here Coz wordpress' codebase is ...
Re: Wordpress Plugin Development Tutorial by Ajibel(m): 11:13pm On Sep 01, 2013
Aye python Aye python cheesy cheesy
Re: Wordpress Plugin Development Tutorial by ayodinho91: 1:06am On Sep 02, 2013
Aye, aye... Always interested.
Re: Wordpress Plugin Development Tutorial by talk2hb1(m): 4:42am On Sep 02, 2013
Great, I will get started later in the day because I need to sleep now.
Re: Wordpress Plugin Development Tutorial by Nobody: 10:12am On Sep 02, 2013
aye aye!!! smiley
Re: Wordpress Plugin Development Tutorial by Nobody: 1:12pm On Sep 02, 2013
aye aye! Am happy am following you @Judinho, Wouldnt have found this thread..... @ OP only in PHP or we can use other language too?
Re: Wordpress Plugin Development Tutorial by ayox2003: 3:16pm On Sep 02, 2013
I'm in...thanks.


Frawzey
Re: Wordpress Plugin Development Tutorial by adewasco2k(m): 6:32pm On Sep 02, 2013
adeaugustus: aye aye! Am happy am following you @Judinho, Wouldnt have found this thread..... @ OP only in PHP or we can use other language too?
PHP for sure

1 Like

Re: Wordpress Plugin Development Tutorial by Nobody: 9:04pm On Sep 02, 2013
so start the tuts it seems we are much now
Re: Wordpress Plugin Development Tutorial by talk2hb1(m): 10:10pm On Sep 02, 2013
Okay, I did love to say thank you for showing interest in my thread, but before I proceed I want to make some foolish assumptions:
Foolish Assumptions
1) You can browse the Internet
2) You did not pay for WordPress software
3)You download a free WordPress software
4)You have experience installing WordPress
5)You are familiar with the WordPress software
6)You know and believed that WordPress plugin help add more features to WordPress
7)You can write simple code in PHP and HTML and finally
coolYou can read simple and incorrect English
Based on this assumptions, then we are good to go.
Our Story Line
Lets assume we(Me, Myself, and I) have just won a Bazillion dollars contract from MTN Nigeria to developed a WordPress plugin for their next coming Kukere dancing competition and they want participants to register on their WordPress deployed website. In this tutorial I'll teach how to build a simple plugin that will help in managing simple registration for our kukere dancing competition, so our plugin will have registration form on the front-end and the administrator can view the registration on the back-end, thats our plugin detail in a nutshell so lets get started.
WordPress Hook
Let me introduce one important concept in WordPress plugin development Hooks. Hooks are interface provided by WordPress to allow your plugin to hook into the rest of WordPress. Every time you request a WordPress page, WordPress checks all its pre-built functions (technically API) its this API you hook your own custom code into. There are two types of hooks action and filter.
Action: Actions are the hooks that WordPress core launches at specific points during execution, or when specific events occur. your plugin can specify that one or more of its PHP function to run at that point.
Filter: Filters are the hooks that WordPress launches to modify content prior to presentation to the browser screen or before saving it into the database.
Sometimes you can accomplish the same goal with either of the two. Having understand what actions and filter is you can now get started writing your custom plugin, the essence of understanding hooks is that WordPress discourage modify the core of WordPress core code, so you are encouraged to use action and filter.
Re: Wordpress Plugin Development Tutorial by talk2hb1(m): 10:37pm On Sep 02, 2013
Getting started
lets get our hand dirty by writing some lines of code, first we need to create header for our plugin and in it we add our plugin information.

<?php
/*
Plugin Name: Kukere
Plugin URI: http://www.qlickas.com
Description: Kukere dance competition registeration plugin, for participant to register for the competition.
Author: Habeelety
Version: 1.0
Author URI: http://www.qlickas.com
*/
?>


copy the above code and paste it in a text editor and save it as kukere.php move it to this folder /wp-content/plugins/ in your WordPress installation folder. next navigate to your plugin page on your admin area, you should see your plugin listed among the plugin but as an inactive plugin, go ahead and activate it. the plugin does nothing for now it only shows that we are on the right course. if you are very observant you will observed that all the details we entered were listed on the plugin admin page, the name option is the name of our plugin and it is the only needed information by WordPress to recognize your plugin so its the most important of all. You are free to edit these information if you want, our next task is to create a folder for our plugin since we will be having more than one file in our plugin and a professional way of writing software. create a folder and name it kukere, then move the our plugin file into the folder. you can create additional folder in our kukere folder, folders like php, CSS,and JavaScript folder it is not compulsory but I considered it necessary as a good practice or personal preference. Our plugin has not done anything so far, so lets make it do something useful. first lets create the registration form for the front-end, the form will collect information on the name, DOB, address, phone number and email address of the willing participants.
first lets create the registration page and save it as the registerationform.php in the php folder in our plugin folder, and past the code below into it.

<?php
/*
All registeration details and processing goes in here
*/
if (isset($_POST['register'])) {
global $wpdb; //calling WordPress database object
//TODO: Do your sanitization as deemed fit
$firstname = $_POST['firstname'];
$lastname = $_POST['lastname'];
$number = $_POST['number'];
$email = $_POST['email'];
$dob = $_POST['dob'];
$address = $_POST['address'];
//Save into database and show confirmation
if ($wpdb->insert("kukere", array('firstname' => $firstname,
'lastname' => $lastname,
'dob' => $dob,
'number' => $number,
'email' => $email,
'address' => $address
) == false)) {
$saved = '<div class="error">Error</div>';
} else {
$saved = $firstname . " " . $lastname . " Your registeration was successful";
}
}

?>
<style>
.kukere-main{
padding-left: 25%;
/*padding-right: 25%;*/
}
fieldset{
border: 0px;
}
.kukere-main input{
display:block;
background: #f0f0f0;
border: 1px solid #ccc;
margin:0 15;
/*width:100%;*/
}
</style>
<div id="reg-confirmation">
<?php
if (isset($saved)) { //checking if the saved variable has been set
_e($saved, "kukere"wink; //then output the result here
}
?>
</div>
<div class="kukere-main">
<form method="GET" action="">
<fieldset>
<legend> Kukere Dancing Registration</legend>
<p>
<label for="firstname">First Name:</label>
<input type="text" placeholder="First Name" name="firstname" /></p>
<p>
<label for="lastname">Last Name:</label>
<input type="text" placeholder="Last Name" name="lastname"/></p>
<p>
<label for="dob">Date of Birth</label>
<input type="text" placeholder="Date of Birth" name="dob"/></p>
<p>
<label for="phonenumber">Phone Number:</label>
<input type="text" placeholder="Mobile Number" name="phonenumber"/></p>
<p>
<label for="email">email:</label>
<input type="text" placeholder="Email Address" name="email"/></p>
<p>
<label for="address">Home Address:</label>
<input type="text" placeholder="Home Address" name="address"/></p>
<p>
<input type="submit" name="register" value="Register"/>
</p>
</fieldset>
</form>
</div>

4 Likes 1 Share

Re: Wordpress Plugin Development Tutorial by Nobody: 11:11pm On Sep 02, 2013
cheesy Keep em' coming
Re: Wordpress Plugin Development Tutorial by Nobody: 11:23am On Sep 03, 2013
.
Re: Wordpress Plugin Development Tutorial by ayodinho91: 1:05pm On Sep 03, 2013
keep it coming. #following
Re: Wordpress Plugin Development Tutorial by mj(m): 9:30am On Sep 05, 2013
Mr. Habeeb, i dey feel u.
Re: Wordpress Plugin Development Tutorial by talk2hb1(m): 9:46pm On Sep 05, 2013
Thanks mj and everyone, Okay lets continue with our tutorial!!!
In my last post we created the registration form for our kukere competition registration form.
The registration form is just normal html and PHP codes except for the WordPress database object that we used in saving it into the database table. We were able to separate our presentation from the rest of the main code too.
Database Structure
After creating our registration page, we need to save the captured data into the database therefore we need to create a table that will reside with other WordPress tables. Our table will have Seven column namely id, fname, lname, dob, number,email, and address. Each of our form field will be saved into this fields except the for the id field which is going to be auto generated by the database. So lets create our database structure, our table name shall be call kekukere.

$tbl_kukere = $wpdb->prefix . "kukere"; //creating the kukere table name
$kukereStructure = "CREATE TABLE IF NOT EXISTS $tbl_kukere( id int(9) NOT NULL AUTO_INCREMENT, fname varchar(200) NOT NULL, lname varchar(200) NOT NULL, email varchar(200) NOT NULL, number varchar(200) NOT NULL, dob varchar(200) NOT NULL, address varchar(200) NOT NULL, PRIMARY KEY (id))";
$wpdb->query($kukereStructure); //running the table query

What just happened?
We just defined a table for our plugin, the name of the table is kukere prefixed with the table defined prefix during your WordPress software installation. We were able to extract it with the help of wpdb->prefix property which we concantenated with our own name “kukere”, next we defined our own table structure and assigned it to the variable $kukereStructure, the last line $wpdb->query($kukereStructure) actually run the query in the database, I might explain more WordPress database object $wpdb.
Installation
We want our plugin to to create the table we just created on installation so that when registration actually commenced we can have our data saved in the kukere table, so lets create a function that does the installation.
1. Open the kukere.php file in the kukere folder
2. create a function called installer()
3. paste the above table code we wrote above into the function
4. outside the function installer() call this action hook
5. activate to necessary installation function when we activate our hook on the admin page.
This is the raw code:

//on activate plugin call the activate action hook
add_action('activate_kukere/kukere.php', 'installer'); //Installing the plugin tables here

Before you bolt down a rat hole this what happened. We invoked the WordPress hook action called activate, The activate hook action runs on any new plugin activation, so we were able to hook or call our own defined function called installer() without those brackets. The first argument we passed is the activate hook action prepend with our plugin folder name plus the plugin file, while the second argument is our own installer function. That should create our table on plugin activation process you can also run other stuffs too on activation like the version of WordPress being used, create a new folder, or prompt for license key and stuffs like that.
[ShortCode]
If you are a frequent WordPress plugin user, some plugin has some predefined or generates a shortcode for you to use looking something like this[i][shortcode][/i]. This shortcode can be used anywhere in your post, page or even on the sidebar widgets. We will create our own shortcode that we can use on the frontpage of our WordPress site, I think this better than creating a custom page which most developer will gladly recommend. We will call our shortcode kukere-registeration, so when you want to create the registeration page for the frontend all you need to do is pasting this in the post or page content area [kukere-registeration] but first lets define our kukere-registeration shortcode.
On the main plugin file kukere.php,
1. create a function called showForm()
2. Include the registration form from the PHP folder
3. Call the WordPress shortcode filter API function to make the form visible on the front end.
Here is what the code should like:

function showForm() {
include_once'php/registerationform.php'; //including our registeration form file in here
}
//use shortcode filter hook to make it available for the front end
add_shortcode('kukere-registration', showForm);

This is what happened above, we defined a function called showForm(), include the registerationform.php file we created earlier on in the project located in the PHP follder of our plugin, then we called the add shortcode hook filter with two arguments. The first argument is our defined shortcode, while the second argument is our defined showForm() functio without those brackets. So to display the registeration on the frontend follow this steps:

4. Navigate to the admin area of your WordPress site or blog to create a new page or post
5. It can be given any title of ones’ choice, but I prefer naming it register
6. Type this into the content area [kukere-registration] (remember our defined shortcode name)
7. Publish the post or page,
8. Finally click on view post to view post/page
The registration page should be displayed on the page/post, if you type the code correctly. Our frontend is now ready, Congratulations!!! Let’s move on to the next task on our to-do list creating the backend of the plugin.

1 Like

Re: Wordpress Plugin Development Tutorial by talk2hb1(m): 12:42pm On Sep 10, 2013
Admin Page
On the admin side we want the admin to view all the registration data; this data will be selected from the database and presented for the admin on the admin page, so the admin page will have a main menu with just one page. So follow the steps below to create the admin page:

1. Create another PHP file called kukereadmin.php and save it into the PHP folder of our kukere plugin folder.
2. In the kukereadmin.php file drop the code below into it the file

<?php
global $wpdb;
$tableName = $wpdb->prefix . "kukere"; //setting the table name with the table prefix
$queryData = "Select * from $tableName order by id asc"; //creating the query
$result = $wpdb->get_results($queryData); //running the query
?>
<div id="kukere-main">
<h2>Kukere Plugin Administrator Page</h2>
<table class="wp-list-table widefat plugins" cellspacing="0">
<thead>
<tr>
<th>First Name</th>
<th>Last Name</th>
<th> Date of Birth</th>
<th> Email </th>
<th> Phone Number</th>
<th>Address</th>
</tr>
</thead>
<tfoot> <tr>
<th>First Name</th>
<th>Last Name</th>
<th> Date of Birth</th>
<th> Email </th>
<th> Phone Number</th>
<th>Address</th>
</tr>
</tfoot>
<?php
if (isset($result)) { //if the result variable is set
foreach ($result as $results) { //loop through the returned object
echo "<tr>
<td>" . $results->fname . "</td>
<td>" . $results->lname . "</td>
<td>" . $results->dob . "</td>
<td>" . $results->email . "</td>
<td>" . $results->number . "</td>
<td>" . $results->address . "</td>
</tr>";
}
}
?>
</table>
</div>

What is that code all about?
We invoke the WordPress global database object, then we set the our table name by getting our WordPress table name prefix and concatenating it with our table name kukere. Next we create our query variable $queryData with the query value, then we run our query with WordPress in built database object $wpdb->get_results() and save the return the result in the variable $result for later usage. The returned result is an array, each element of the array corresponds to one row of the query results.
I think you understand the HTML part div, table, table header and footer. The PHP part is just a loop through the returned variable array, we first make sure that the value has been set by using the PHP function isset(), then we loop through array variable value. Thats all for the display of the data from the database, lets move on to showing it on the administration section. So we will create top menu for the admin page meaning that we can have sub-menu under our own menu.
Admin Menu
To create the admin menu we need create two more function in our kukere.php file. The first one will help us to insert the kukereadmin.php file into the main file, while the second one will be used to define our menu. So follow this steps to create the admin menu:
3. open the kukere.php file and create a function called createAdminPage()
4. In the function include the kukereadmin.php file
5. next create the second function name it menuKukere()
This is the raw code:

//creating the admin page function
function createAdminPage() {
include_once 'php/kukereadmin.php'; //including our admin page heres
}
//defining the admin page function
function menuKukere() {
//defining our menu structure and type
add_menu_page('Kukere Data', 'Kukere', 9, 'kukere-admin-page', 'createAdminPage',plugin_dir_url(__FILE__).'/images/kukere.png');
}
//creating the menu with the admin_menu function
add_action('admin_menu', 'menuKukere');
I think the part that you might not understand are, add_menu_page('Kukere Data', 'Kukere', 9, 'kukere-admin-page', 'createAdminPage',plugin_dir_url(__FILE__).'/images/kukere.png'); and add_action('admin_menu', 'menuKukere'); .

The add_menu_page(); helps to define the type of menu you want in our own case a top menu instead of a sub-menu. The first argument is the page title, the second argument is the menu title, the third argument is the access privilege in this case the admin only, the fourth is our link slug of the menu in the URL, the fifth argument is our page function that will help render our page, and finally the sixth and last argument is the link to our menu icon (optional). The last action hook function add_action('admin_menu', 'menuKukere'); was used to hook our menu into the rest of WordPress menu function. Go to the admin section of your WordPress site/blog you should see the Kukere admin listed with the rest of the top menu, click on it if any body has registered on the front-end their information should be displayed right in their.
Final Talk
That's all for our kukere plugin, MTN Nigeria has deployed our plugin on their WordPress deployed website and they are happy with it, participants have been registering on their site, their website admin can view latest data of participants on the back-end.
But thats not all for developing a commercial plugin or a plugin you want to use on your blog/website you need to be conscious of security of your site, because thats the Achilles heel of most of this CMSs. Our plugin still has some lapses and still leaves room for improvement the admin might decided to download the all registered data in CSV format, limit the amount of row selected from the database, have a closing date for the registration, sending a confirmation mail to the participants, validate the entered information on the front-end with JavaScript and on the back-end, and many more.
The complete source code and PDF version of this tutorial is available on my website at www.qlickas.com you can also view my profile at www.qlickas.com with knowledge of plugin development you can make WordPress do anything you can imagine, you are only limited by your own imagination.
Warmest Regard Habeeb Salami ( Whatsapp / Call = +2348064620491)
Sanjuma!!!!!!!
Re: Wordpress Plugin Development Tutorial by Nobody: 1:16pm On Sep 10, 2013
Nice one but i was expecting something in OOP, but this is still cool anyway mind if i add the OOP tutorial of WP, also i don't write much so i will only say the main point
Re: Wordpress Plugin Development Tutorial by mj(m): 1:59pm On Sep 10, 2013
Nice one Habeeb.
Re: Wordpress Plugin Development Tutorial by Nobody: 4:30pm On Sep 12, 2013
<?php 
/*
* Plugin Name:Styljunki Widget Generator Plugin URI: http://okeowoaderemi.com
* Description:A Wordpress Plugin that generates a Widget using Dojotoolkit and Iframe or JSONP
* Version:0.1 Beta Author: Okeowo Aderemi Darth Vader
* Author URI: http://okeowoaderemi.com
*/

/**
* The Styljunki_WidgetGen
**/
class Styljunki_WidgetGen{


public function __construct(){
$this->addStyles();
$this->addScript();
add_shortcode('widgetgen', array($this, 'content' ));
add_action("wp_print_footer_scripts",array($this,'footerCode'),10);

}
/**
* Loads the whole Dependencies of Javascript for Wordpress
* */
private function addScript(){
if(!wp_script_is('bootstrap','registered')){
wp_register_script('bootstrap',get_bloginfo('template_directory') . '/bootstrap/js/bootstrap.min.js',array('jquery'),'1.0' );
wp_enqueue_script('bootstrap');
}


}

public function footerCode(){
?>
<script type="text/javascript">
require(["widgen/widget","dojo/domReady!"],function(widget){
document.body.className+= " claro";
widget.bindControls();
});
</script>
<?php
}

/**
* Loads the whole Dependencies of Styles for WordPress
* */
private function addStyles(){
if(!wp_style_is('bootstrap','registered')){
wp_register_style('bootstrap',get_bloginfo('template_directory').'/bootstrap/css/bootstrap.css');
wp_enqueue_style('bootstrap');
}


}

/**
* Loads the content to render
* @param $attributes holds the attribute for the Shortcode
*
* */
public function content($attributes){

ob_start();
#include the form
include WGPATH."/form.php";
$form=ob_get_contents(); //Returns the Output
ob_end_clean();
return $form;
}
}

define('WGURL', WP_PLUGIN_URL."/".dirname( plugin_basename( __FILE__ ) ) );
define('WGPATH', WP_PLUGIN_DIR."/".dirname( plugin_basename( __FILE__ ) ) );

//add the shortcode hook

new Styljunki_WidgetGen();





I won't beat around the bush since not sure if anyone is reading this.
1. When creating a plugin in OOP style just drop the folder e.g (ExamplePlugin) in the plugin directory and name the main plugin file "plugin.php"
2. Everything follows with talk2hb tutorial except you use the $this a lot just as you will while using the call_user_func for calling method in class e.g add_shortcode('kukere-registration', showForm); becomes add_shortcode('shortcode', array($this,'name_of_method')); $this also the same as __CLASS__
Re: Wordpress Plugin Development Tutorial by talk2hb1(m): 4:44pm On Sep 12, 2013
Shigaba!!!!
Please cover the OOP abeg with the JavaScript and CSS.............
Re: Wordpress Plugin Development Tutorial by mj(m): 6:32pm On Sep 12, 2013
Nice one @ PC Guru.
Re: Wordpress Plugin Development Tutorial by Nobody: 6:48pm On Sep 12, 2013
Here the Call Stack

WordPress calls Plugin.php which in my file you will notice that my Class has been instantiated

The Next call is the __construct method

public function __construct(){
$this->addStyles();
$this->addScript();
add_shortcode('widgetgen', array($this, 'content' ));
add_action("wp_print_footer_scripts",array($this,'footerCode'),10);

}


The addStyle function simple loads ours css file

private function addStyles(){
if(!wp_style_is('bootstrap','registered')){
wp_register_style('bootstrap',get_bloginfo('template_directory').'/bootstrap/css/bootstrap.css');
wp_enqueue_style('bootstrap');
}


}

Now we are using WordPress to tell us if the css stylefile ('bootstrap') has been registered by registered it means as it been queued to the list of css files to load if not then let's register the bootstrap its important to do these because other plugins can make use of bootstrap thus causing a double loading. the enqueue_style method simply means render the css file since i will need it before the main content is ready.

Next Call Stack is the addScript

if(!wp_script_is('bootstrap','registered')){
wp_register_script('bootstrap',get_bloginfo('template_directory') . '/bootstrap/js/bootstrap.min.js',array('jquery'),'1.0' );
wp_enqueue_script('bootstrap');
}


}

If you are a JavaScript Developer you will know that you can't run Dojo or jQuery before the libraries are loaded, just like the addStyle the same logic applies except that the register-script takes an extra parameter which is 'jquery', that parameter means dependencies, JavaScript Developer who use RequireJS,AMD or CommonJS or even NodeJS will know the big deal about dependencies this means run this script after jquery has been enqueued. trust me i have suffered enough madness with JS in WP, this is the sanest way

Our next Call Stack is the add_shortcode there's nothing special about this infact this is just a sugar wrapper for another function

add_shortcode('widgetgen', array($this, 'content' ));


This code will call the call_user_func_array, $this gets transform to the name of the class in essence it simply does this {__CLASS__}->{$method} which is equal to
Styljunki_WidgetGen->content() if you don't know this then best time to hit up OOP and PHP SPL Classes this simply adds a hook for a shortcode and registers the method, later during the Application LifeCycle of wordpress, it will trigger the shortcode hook and all the functions binded to it will be called this is similar to ZF2 Eventmanager, or Yii Events or even Publish/Subscribe Pattern .

Add action for footerCode is the same thing except the last parameter means priority which gets called first. so that's it if i didn't type it well sorry not easy smoking and typing at the same time. tongue
Re: Wordpress Plugin Development Tutorial by codelord: 11:34pm On Sep 23, 2013
Is that all from you guys
Well nice write up, keep it up.

(1) (2) (Reply)

Finger Print Application With C# / I Want To Learn C++ Programming Language / Building Website & Mobile Apps

(Go Up)

Sections: politics (1) business autos (1) jobs (1) career education (1) romance computers phones travel sports fashion health
religion celebs tv-movies music-radio literature webmasters programming techmarket

Links: (1) (2) (3) (4) (5) (6) (7) (8) (9) (10)

Nairaland - Copyright © 2005 - 2024 Oluwaseun Osewa. All rights reserved. See How To Advertise. 84
Disclaimer: Every Nairaland member is solely responsible for anything that he/she posts or uploads on Nairaland.