Interaction between PHP and WordPress

Let us see the interaction and relation between PHP and WordPress

Do you want to become a successful PHP and wordpress developer – all together? if that so, then this series of tutorials are for you. The first thing you need to understand is the relation and interaction between PHP and WordPress. How PHP and WordPress interact with each other? What is the relation? What PHP topics you should learn?
You may consult my PHP Articlesto get an idea.
Continue reading “Interaction between PHP and WordPress”

How I joined multiple Bootstrap themes with my official WordPress site

I thought I should write down this without delay and share with my readers. These are bits and pieces of my experiences of writing my official website It was a kind of trial and error method that I had always expected that, well – touch wood, it’d survive somehow.
And it survived the experiments. Google started indexing it and I think the time has also come to play with Google analytic.
Let me finish it very fast and start from the very beginning.
I decided to inject multiple bootstrap CSS styling in my website. It’s a kind of bootstrapping wordpress.
As you know, when you start building a wordpress site from scratch you need few files at the very beginning. They are – style.css and few more PHP files like index, page, home, header, footer, sidebar etc.
I decided to make the front page a static page so I injected a ‘front-page.php’ file in that beginning procedure.
As of now I am keeping three styles – two of them are open source bootstrap theme and the other one is the mystery (please download it from my github repository).
The first step is – make your default style intact so that it does not break.
My ‘style.css’ code:
@import url('css/font-awesome.min.css');
@import url('css/bootstrap.min.css');
@import url('css/animate.css');
@import url('css/style.css');

body {


Next get the link in the ‘header.php’ file:


I don’t want the ‘Home’ navigation in my first page menu bar so just excluded it with a simple code:
wp_list_pages(array('title_li' => '', 'exclude' => 4));
Remember wordpress keeps everything as ‘post’ inside database. My home page post id is 4 and I’m excluding it from the first page navigation.
You know the other wordpress pages more or less follow this same logic:

if ( have_posts() ) : while ( have_posts() ) : the_post();
I decide to get the permalink, time, title, and content after that so the functions are easy:
the_time('l, F jS, Y'); //you can change the format, please search in the codex

You should also keep an error message if something goes wrong with your code.
_e('Sorry, there are no posts.');
As I said before: there are three themes as of now. So I need two more template files. One is for Blog and the other, the custom one is for any other purposes.
You need ‘header-blog’, ‘footer-blog’, ‘header-custom’, and ‘footer-custom’. And in the related template file don’t forget to write like this:

Besides these simple routine I decided to show one category in my custom styling. I’ll write this part in detail.
Finally my website looks like this:

The Home page:

The blog Page:

The Contact page:

The archive page:

And finally I decided to show my ‘PHP’ category posts in the custom styling:

So this is it. For full code please visit my Github repository:


What facebook knows about you?

I’m currently working with facebook developers tools. Trying to merge with WordPress or any other PHP application that comes my way.
In fact reactivating my account was a part of that process.
What I’ve found so far is astounding. The facebook privacy policy is disastrous. General people know very little about it but facebook knows a lot about them.
I’ll keep this post updated so if you’re worried about losing your privacy to billions of people, you may stay in touch.

Why WordPress for PHP Developers?

For PHP developers who want to create applications quickly but efficiently, WordPress is the best choice.
I had worked with other PHP frameworks like Laravel and Codeigniter before and found them extremely time consuming. I tasted Drupal also.

In web development you ultimately handle with content or data. And this volume of data is becoming enormous with the passage of time. It has many titles, categories, sub-categories, sub-sub-categories and you may dig deeper.

This is big data.

The simplicity of WordPress makes this job absolutely fun with little coding. If you love to code then there is Laravel. You’ll have plenty of chances to code but it’ll take time.

An application that takes one month to be formed in Laravel, may take less than one week in WordPress.

I give you a very simple example.

It took less than one hour to build a full fledged web application with WordPress where I used four different themes. I just Bootstrapped them. look at the pages first!

The first one is Home page.

why wordpress

why wordpress

The second one is a Sample Page.

why wordpress

why wordpress

The Third one is a Generic content (Here your choice is simply endless)

why wordpress

why wordpress

And Lastly for any news oriented posts I chose a completely different styling with a sidebar where I can add any widgets any time.

why wordpress

why wordpress

You just cannot imagine how simple the total operation was! It took less than one hour with few WordPress functions like this:

get_header(); get_footer(); get_sidebar(); bloginfo('stylesheet_url'); wp_list_pages(array('title_li' => '', 'exclude' => 4));

May be I’m missing one or two functions. But It’s true that it really does not take much. For getting contents on your page or post, the main WordPress functions you need are also very simple.
They are like this:

if ( have_posts() ) : while ( have_posts() ) : the_post();
the_permalink(); the_title(); the_time('l, F jS, Y'); the_content(); 
endwhile; else:
_e('Sorry, there are no posts.');

The ‘functions.php’ file is little bit longer, but less than any PHP framework single page code!

add_action('init', 'create_post_type');
function create_post_type() {

'labels' => array(
'name' => __('Generic Content'),
'singular_name' => __('Generic Content')
'public' => TRUE,
'has_archive' => true


function post_movie_scripts() {


wp_enqueue_style('customstyle', get_template_directory_uri(). '/custom/custom-style.css', 'style');


add_action( 'wp_enqueue_scripts', 'post_movie_scripts' );

function startboot_scripts() {

wp_register_script('my_amazing_script', get_template_directory_uri() . '/startboot/vendor/jquery/jquery.min.js', array('jquery'), true);
wp_register_script('my_amazing_script', get_template_directory_uri() . '/startboot/vendor/bootstrap/js/bootstrap.min.js', array('jquery'), true);

wp_register_script('my_amazing_script', get_template_directory_uri() . '/startboot/vendor/scrollreveal/scrollreveal.min.js', array('jquery'), true);
wp_register_script('my_amazing_script', get_template_directory_uri() . '/startboot/js/creative.min.js', array('jquery'), true);

wp_register_script('min', get_template_directory_uri() . '/custom/lib/jquery/jquery.min.js', array('jquery'), true);
wp_register_script('bootstrap', get_template_directory_uri() . '/custom/lib/bootstrap/js/bootstrap.min.js', array('jquery'), true);

wp_register_script('new-age', get_template_directory_uri() . '/custom/js/new-age.min.js', array('jquery'), true);


//wp_enqueue_style('news', get_template_directory_uri(). '/blog/blog-style.css', 'style');

if (is_page(4)) {

wp_enqueue_style( get_template_directory_uri(). '/style.css', 'style' );


elseif (is_page(array(2))) {

wp_enqueue_style('customstyle', get_template_directory_uri(). '/custom/custom-style.css', 'style');


elseif (is_page(7)) {

wp_enqueue_style('customstyle', get_template_directory_uri(). '/custom/custom-style.css', 'style');


elseif (is_page(array(14))) {

wp_enqueue_style('animate', get_template_directory_uri(). '/hydrogen/css/animate.css', 'style');
wp_enqueue_style('icommon', get_template_directory_uri(). '/hydrogen/css/icomoon.css', 'style');
wp_enqueue_style('magnific', get_template_directory_uri(). '/hydrogen/css/magnific-popup.css', 'style');
wp_enqueue_style('salvattore', get_template_directory_uri(). '/hydrogen/css/salvattore.css', 'style');
wp_enqueue_style('style', get_template_directory_uri(). '/hydrogen/css/style.css', 'style');

else {

//wp_enqueue_style('customstyle', get_template_directory_uri(). '/custom/custom-style.css', 'style');

wp_enqueue_style('news', get_template_directory_uri(). '/blog/blog-style.css', 'style');

add_action( 'wp_enqueue_scripts', 'startboot_scripts' );

function boot_scripts() {

if (is_page(16)) {

wp_enqueue_style('WP Bootstrap', get_template_directory_uri(). '/bootstrap/boot-style.css', 'style');


add_action( 'wp_enqueue_scripts', 'boot_scripts' );

if ( function_exists('register_sidebar') )
'before_widget' => '',
'after_widget' => '',
'before_title' => '

'after_title' => '


register_taxonomy( 'sample-taxonomy', 'post', array( 'label' => 'Sample Taxonomy'));

Look at the main ‘style.css’ code, this is unbelievable:

@import url('startboot/vendor/bootstrap/css/bootstrap.min.css');
@import url('startboot/vendor/font-awesome/css/font-awesome.min.css');
@import url('startboot/vendor/magnific-popup/magnific-popup.css');
@import url('startboot/css/creative.min.css');

body {


.home-content {

margin: 10px;
padding: 10px;


.footer-content {


The Other related style-sheet coding are equally simple and elegant.

I hope this post will help PHP developers to decide which they really need to work faster to give more output in less time.

I know your job is demanding.

How to settle problems in Adminer

As you know Adminer is a parallel powerful database handling engine that works like phpMyAdmin.
Often we encounter a problem.
While upgrading our Linux system, we need to update the PHP or MySQL version. While doing this When we type: http://localhost/adminer.php to open Adminer, we encounter an error like this:

None of the supported PHP extensions (MySQLi, MySQL, PDO_MySQL) are available.

To handle this common error what can be done?
It can be solved by taking only two steps.

sudo apt-get install php7.0-mysqlnd

Next you have uncomment one line in ‘/etc/php/7.0/apache2/php.ini’. To do that open it in any editor;

sudo gedit /etc/php/7.0/apache2/php.ini

And just uncomment this line in Linux:

For Windows uncomment this line:


That is all your Adminer will work fine.

Reconfigure Apache2 server with PHP 7

It’s a quite common problem that we face when we try to work around apache server and php.
Suppose you have just reconfigured your apache 2. Next you find that your php 7 script is not working any more with your php and no script is executed properly.
What will you do?

Open your linux terminal and type the following commands one after another. Usually
it works.

sudo apt-get install apache2 php7.0 libapache2-mod-php7.0

a2query -m php7.0

sudo a2enmod php7.0

sudo service apache2 restart

How to configure your apache 2 server with php 7

Suppose you have apache 2 server installed in your Ubuntu 14 and it came with php 5*. Now whenever you start apache 2 server typing localhost in your browser, you find that your apache server has not been configured with php 7.1.
Now how you’d solve this nagging problem?
First you need to remove every php version from your machine.

sudo apt-get purge php.*

Next you need to reinstall PHP 7 by these commands one after another:

sudo add-apt-repository ppa:ondrej/php

sudo apt-get install -y language-pack-en-base
sudo LC_ALL=en_US.UTF-8 add-apt-repository ppa:ondrej/php

sudo apt-get update

sudo apt-get install php7.1

sudo apt-get install php7.0-mysql

sudo apt install php libapache2-mod-php

sudo apt install php7.0-mbstring

It’s done. Now your apache server has been configured with php latest version.

How to install Adminer – alternative to phpmyAdmin

First download the latest Adminer into your Apache web servers root folder using this command:

sudo mkdir /usr/share/adminer

sudo wget "" -O /usr/share/adminer/latest.php

sudo ln -s /usr/share/adminer/latest.php /usr/share/adminer/adminer.php

echo "Alias /adminer.php /usr/share/adminer/adminer.php" | sudo tee /etc/apache2/conf-available/adminer.conf

Next you need two more lines:

sudo a2enconf adminer.conf

sudo service apache2 restart

Now open your browser and type: