Custom Post Type in WordPress for PHP Developers

Sometimes you need a custom post type in your WordPress application.
Let me explain why you need it first?
Wordpress comes up with two basic types of Posts. One is Post and the other is Page. People often get misguided and think WordPress is just a blog engine and a content management system on a PHP platform.
This concept is wrong.
Wordpress is a sleeping giant whom you need to poke and tweak to get things done on your whim. Just make it talk, it’ll actually sing! Such is the power of WordPress.
In default Pages or Posts you may add plenty of contents and you can also categorize them, no problem.
But a custom post type is the symbol of your freedom. You’re going to do something with it that simple Page and Post could not do. You can extend your Custom Post Type to eternity. Unthinkable and unbelievable are the possibilities.
The process is extremely simple.
Add this code to your ‘functions.php’:

// ADD CUSTOM POST TYPE
add_action('init', 'create_post_type');
function create_post_type() {
    
    register_post_type('custom-content',
            array(
                'labels' => array(
                    'name' => __('Custom Content'),
                    'singular_name' => __('Custom Content')
                ),
                'public' => TRUE,
                'has_archive' => true
            ));
    
}

On the left side of your Admin Dashboard panel you get it. Just click and it’ll open. Now you can add any type of content here. Text, Image and Video.
Want to show it on your Home page?
Very simple. On the ‘front-page.php’ add this code:


$args = array( 'post_type' => 'generic-content', 'posts_per_page' => 10 );
$the_query = new WP_Query( $args ); 
if ( $the_query->have_posts() ) :
while ( $the_query->have_posts() ) : $the_query->the_post();
the_title(); 
the_content(); 
wp_reset_postdata();  
endwhile; else:
_e( 'Sorry, no posts matched your criteria.' );
endif;

Besides on your front page you want to show the Custom content on a dedicated page. Create a ‘single-custom-content.php’ page and just paste the code of your ‘page.php’. You need to get the title and content, so it’s not difficult at all.

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.');
endif;

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


// ADD CUSTOM POST TYPE
add_action('init', 'create_post_type');
function create_post_type() {

register_post_type('generic-content',
array(
'labels' => array(
'name' => __('Generic Content'),
'singular_name' => __('Generic Content')
),
'public' => TRUE,
'has_archive' => true
));

}

function post_movie_scripts() {

if(is_post_type_archive('movies')){

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_script('startboot_script');

//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') )
register_sidebar(array(
'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.

WordPress Coding from Scratch

I just want to share my wordpress coding exercises with my readers.

The very first in this series is “wordpress coding from scratch”. It will teach you how to start your own wordpress theme from the scratch with minimum coding.

You need to create a theme folder in the “wp-content/theme” folder.

Suppose we name it “my-theme”.
In that folder you create a ‘style.css’ file and write few lines of code that can just start your first wordpress site.
Continue reading “WordPress Coding from Scratch”