Wordpress Series: Creating a Custom Post Type (Part 2) by mcfarhat

View this thread on steempeak.com
· @mcfarhat · (edited)
$108.48
Wordpress Series: Creating a Custom Post Type (Part 2)
So today we are continuing our yesterday's session about Wordpress' Custom Post Types. If you missed the prior episode, you can check it out here [Wordpress Series: Creating a Custom Post Type (Part 1)
](https://steemit.com/utopian-io/@mcfarhat/wordpress-series-creating-a-custom-post-type-part-1)

<center>
![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1512329720/r6l1umsqovxiaa9h8ukf.png)
</center>

### Quick Recap
Yesterday we went through what custom post types are, why do we need them in wordpress installations, and also got started on the actual code to create our custom post type (CPT), whereby we wanted to actually add support for *Car entities* in wordpress. 
Based on those steps, wordpress at the moment identifies Car as a CPT, yet there isn't much we can do with Cars aside from what a general post can do with them. For this purpose, we need additional work.

### Adding Additional Car Info
So the purpose for now is to allow storing, retrieving and displaying specific content for our car entities, in order to do that, we need to configure out back end administration section, via custom coding, to support those specific *attributes* or in wordpress terminology *meta data*.
Let us consider that, and for simplicity for now, we would like to add *Make*, *Model* and *Year* to the information of the car. Of course adding additional details would follow a similar path. So how do we go about doing that?

### Creating our data class
So yea, the proper way to add this data is via the good old object oriented approach, so that we can add data boxes to allow entry, saving, and display of this data.
So we will first create a class called *Car_Type_Meta_Box*, naming it as such is since it relates to our Car_Type we created earlier, and Meta_Box is because the purpose of it is to create a **meta box** and make it available for us to perform the data manipulation on the aforementioned fields.
```
class Car_Type_Meta_Box {
}
```
And as per any standard class, we will need a proper construct method, which is called upon the instantiation (creation of an entity) of this class. A generic construct would go as follows:
```
	public function __construct() {
		if ( is_admin() ) {
			add_action( 'load-post.php',     array( $this, 'init_metabox' ) );
			add_action( 'load-post-new.php', array( $this, 'init_metabox' ) );
		}
	}
```
We are essentially relying on wordpress hooks for the post and post-new php files to attach the metabox into them. 
*$this* is a standard PHP terminology which allows sending the current class' instance as a param, and then the init_metabox would be a function that we would define to hook the add, save, and render functionality.
```
	public function init_metabox() {
		add_action( 'add_meta_boxes', array( $this, 'add_metabox'  )        );
		add_action( 'save_post',      array( $this, 'save_metabox' ), 10, 2 );
	}
```
Next, we will go on defining the add_metabox function which would handle the display of the meta_box containing the different metadata that we were looking at having. This basically doesn't need to go beyond a single function call to the built-in wordpress function add_meta_box. The params include in order the id of the meta_box, its title, the callback function which will handle the display, essentially render_metabox, the screen on which the meta will display - car CPT screen, the context 'advanced' of the meta_box, and its priority 'default' for now. You can read further details and experiment with its params in the official wordpress documentation about [add_meta_box](https://developer.wordpress.org/reference/functions/add_meta_box/)
```
	public function add_metabox() {
		add_meta_box(
			'car',
			__( 'Car Data', 'car' ),
			array( $this, 'render_metabox' ),
			'car',
			'advanced',
			'default'
		);
	}
```
### Actual display of edit /meta box
Next we will code our base rendering function (which we just referenced above), and to your surprise called render_metabox !
Within this function, we are displaying those boxes to allow data entry, but also grabbing any data that is already saved in the instance to allow for editing. 
And the simplest way to display those is within a simple table structure, or divs if you prefer. Below is our approach to accomplishing that.
Essentially, we are utilizing *get_post_meta* to grab values if this is an edit screen. But also validating the security of the request through including a nonce (you can read more about nonces [here](https://codex.wordpress.org/WordPress_Nonces))
```
public function render_metabox( $post ) {
		// Add nonce for security and authentication.
		wp_nonce_field( 'car_nonce_action', 'car_nonce' );
		// Retrieve an existing value from the database.
		$car_make = get_post_meta( $post->ID, 'car_make', true );
		$car_model = get_post_meta( $post->ID, 'car_model', true );
		$car_year = get_post_meta( $post->ID, 'car_year', true );
		// Set default values.
		if( empty( $car_make ) ) $car_make = '';
		if( empty( $car_model ) ) $car_model = '';
		if( empty( $car_year ) ) $car_year = '';
		// Form fields.
		echo '<table class="form-table" style="width: 100%;">';
		echo '	<tr>';
		echo '		<th><label for="car_make" class="car_make_label">' . __( 'Make', 'car' ) . '</label></th>';
		echo '		<td>';
		echo '			<input type="text" id="car_make" name="car_make" class="car_field" placeholder="' . esc_attr__( '', 'car' ) . '" value="' . esc_attr__( $car_make ) . '">';
		echo '			<p class="description">' . __( 'Provide the Make of the Car', 'car' ) . '</p>';
		echo '		</td>';
		echo '		<td></td>';
		echo '	</tr>';
		echo '	<tr>';
		echo '		<th><label for="car_model" class="car_model_label">' . __( 'Model', 'car' ) . '</label></th>';
		echo '		<td>';
		echo '			<input type="text" id="car_model" name="car_model" class="car_field" placeholder="' . esc_attr__( '', 'car' ) . '" value="' . esc_attr__( $car_model ) . '">';
		echo '			<p class="description">' . __( 'Provide the Model of the car', 'car' ) . '</p>';
		echo '		</td>';
		echo '		<td></td>';
		echo '	</tr>';
		echo '	<tr>';
		echo '		<th><label for="car_year" class="car_year_label">' . __( 'Year', 'car' ) . '</label></th>';
		echo '		<td>';
		echo '			<input type="text" id="car_year" name="car_year" class="car_field" placeholder="' . esc_attr__( '', 'car' ) . '" value="' . esc_attr__( $car_year ) . '">';
		echo '			<p class="description">' . __( 'Provide the Year of the car', 'car' ) . '</p>';
		echo '		</td>';
		echo '		<td></td>';
		echo '	</tr>';
		echo '</tr></table>';
	}
```

### Saving data
Almost there! Next is our save_metabox functions which we referred to earlier. This involves performing a set of validations such as the nonce, logged in user, user role and proper access permission, but also grabbing the data sent upon submission from the last step via the $_POST array to store the new values. And then eventually, relying on wordpress' *update_post_meta* to store the values to the relevant post.
Below is the relevant code.
```
	public function save_metabox( $post_id, $post ) {
		// Add nonce for security and authentication.
		$nonce_name   = $_POST['car_nonce'];
		$nonce_action = 'car_nonce_action';
		// Check if a nonce is set.
		if ( ! isset( $nonce_name ) )
			return;
		// Check if a nonce is valid.
		if ( ! wp_verify_nonce( $nonce_name, $nonce_action ) )
			return;
		// Check if the user has permissions to save data.
		if ( ! current_user_can( 'edit_post', $post_id ) )
			return;
		// Check if it's not an autosave.
		if ( wp_is_post_autosave( $post_id ) )
			return;
		// Check if it's not a revision.
		if ( wp_is_post_revision( $post_id ) )
			return;
		// Sanitize user input.
		$car_make = isset( $_POST[ 'car_make' ] ) ? sanitize_text_field( $_POST[ 'car_make' ] ) : '';
		$car_model = isset( $_POST[ 'car_model' ] ) ? sanitize_text_field( $_POST[ 'car_model' ] ) : '';
		$car_year = isset( $_POST[ 'car_year' ] ) ? sanitize_text_field( $_POST[ 'car_year' ] ) : '';
		// Update the meta field in the database.
		update_post_meta( $post_id, 'car_make', $car_make );
		update_post_meta( $post_id, 'car_model', $car_model );
		update_post_meta( $post_id, 'car_year', $car_year );
	}
 ```
And finally, we will need to instantiate (again, create one active entity of) the class to allow wordpress to work with it. This is accomplished via the simple built in PHP command new along with the class name:
```
new Car_Type_Meta_Box;
```
At the end of our current work, we now have our Car class accessible from the back end
<center>
![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1512328709/yuwevkkrk2n6ue3ytdsk.png)
</center>

We also have our data entry screen for new car types on create new screen with all the data we worked on earlier:
<center>![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1512328994/uxcznymiaqp5euuqabta.png)
</center>

And on edit screen, we can actually see the data loaded into our first car instance :
<center>![image.png](https://res.cloudinary.com/hpiynhbhq/image/upload/v1512328962/worfqghmtps1wwwtzbyr.png)
</center>

**Photo Credits:** Images in this post are either self-created, or are CC images publicly available and labeled for reuse under google search.

**_Prior entries in this series:_**
If you missed them, here they are !
* [Wordpress Series: Creating a Custom Post Type (Part 1)](https://steemit.com/utopian-io/@mcfarhat/wordpress-series-creating-a-custom-post-type-part-1)
* [Wordpress Series: Coding Your Way Via Plugins](https://steemit.com/utopian-io/@mcfarhat/wordpress-series-coding-your-way-via-plugins)
* [How To Properly Customize Your Wordpress Installation .. Via Coding](https://utopian.io/utopian-io/@mcfarhat/how-to-properly-customize-your-wordpress-installation-via-coding)
* [Securing Your Wordpress Installation](https://utopian.io/utopian-io/@mcfarhat/securing-your-wordpress-installation)

***
**_Founder of Arab Steem_**
Arab Steem is a community project to expand Steemit to the Arab world, by supporting the existing Arab steemians and promoting others to join.
You can connect with us on @arabsteem or via discord channel https://discord.gg/g98z2Ya
Your support is well appreciated!

**_Proud Member Of_**
* **steemSTEM**: SteemSTEM is a project that aims to increase both the quality as well as visibility of Science, Technology, Engineering and Mathematics (and Health). You can check out some great scientific articles via visiting the project tag #steemSTEM , project page @steemstem, or connecting with us on chat https://steemit.chat/channel/steemSTEM
* **MAP(Minnows Accelerator Project)**: MAP is a growing community helping talented minnows accelerate their growth on Steemit.
To join, check out the link at the home page of @accelerator account
* **Steemitbloggers**: #Steemitbloggers is a community supporting bloggers with authentic and awesome content! 
To join check out the discord channel https://discordapp.com/invite/gRypnga
***

Thanks !

@mcfarhat

<br /><hr/><em>Posted on <a href="https://utopian.io/utopian-io/@mcfarhat/wordpress-series-creating-a-custom-post-type-part-2">Utopian.io -  Rewarding Open Source Contributors</a></em><hr/>
👍  , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , and 100 others
properties (23)
post_id19,388,385
authormcfarhat
permlinkwordpress-series-creating-a-custom-post-type-part-2
categoryutopian-io
json_metadata"{"type": "tutorials", "repository": {"id": 2889328, "watchers": 10174, "events_url": "https://api.github.com/repos/WordPress/WordPress/events", "forks": 5871, "name": "WordPress", "issues_url": "https://api.github.com/repos/WordPress/WordPress/issues{/number}", "trees_url": "https://api.github.com/repos/WordPress/WordPress/git/trees{/sha}", "fork": false, "git_url": "git://github.com/WordPress/WordPress.git", "assignees_url": "https://api.github.com/repos/WordPress/WordPress/assignees{/user}", "size": 180335, "owner": {"id": 276006, "following_url": "https://api.github.com/users/WordPress/following{/other_user}", "starred_url": "https://api.github.com/users/WordPress/starred{/owner}{/repo}", "subscriptions_url": "https://api.github.com/users/WordPress/subscriptions", "repos_url": "https://api.github.com/users/WordPress/repos", "login": "WordPress", "gists_url": "https://api.github.com/users/WordPress/gists{/gist_id}", "followers_url": "https://api.github.com/users/WordPress/followers", "received_events_url": "https://api.github.com/users/WordPress/received_events", "type": "Organization", "avatar_url": "https://avatars0.githubusercontent.com/u/276006?v=4", "site_admin": false, "organizations_url": "https://api.github.com/users/WordPress/orgs", "gravatar_id": "", "events_url": "https://api.github.com/users/WordPress/events{/privacy}", "url": "https://api.github.com/users/WordPress", "html_url": "https://github.com/WordPress"}, "forks_count": 5871, "git_refs_url": "https://api.github.com/repos/WordPress/WordPress/git/refs{/sha}", "blobs_url": "https://api.github.com/repos/WordPress/WordPress/git/blobs{/sha}", "pushed_at": "2017-12-03T18:14:09Z", "watchers_count": 10174, "teams_url": "https://api.github.com/repos/WordPress/WordPress/teams", "comments_url": "https://api.github.com/repos/WordPress/WordPress/comments{/number}", "archived": false, "svn_url": "https://github.com/WordPress/WordPress", "merges_url": "https://api.github.com/repos/WordPress/WordPress/merges", "subscribers_url": "https://api.github.com/repos/WordPress/WordPress/subscribers", "issue_events_url": "https://api.github.com/repos/WordPress/WordPress/issues/events{/number}", "stargazers_url": "https://api.github.com/repos/WordPress/WordPress/stargazers", "mirror_url": null, "statuses_url": "https://api.github.com/repos/WordPress/WordPress/statuses/{sha}", "has_projects": true, "milestones_url": "https://api.github.com/repos/WordPress/WordPress/milestones{/number}", "description": "WordPress, Git-ified. Synced via SVN every 15 minutes, including branches and tags! This repository is just a mirror of the WordPress subversion repository. Please do not send pull requests. Submit patches to https://core.trac.wordpress.org/ instead.", "keys_url": "https://api.github.com/repos/WordPress/WordPress/keys{/key_id}", "open_issues": 5, "compare_url": "https://api.github.com/repos/WordPress/WordPress/compare/{base}...{head}", "ssh_url": "git@github.com:WordPress/WordPress.git", "license": {"name": "Other", "key": "other", "url": null, "spdx_id": null}, "html_url": "https://github.com/WordPress/WordPress", "commits_url": "https://api.github.com/repos/WordPress/WordPress/commits{/sha}", "open_issues_count": 5, "stargazers_count": 10174, "branches_url": "https://api.github.com/repos/WordPress/WordPress/branches{/branch}", "full_name": "WordPress/WordPress", "forks_url": "https://api.github.com/repos/WordPress/WordPress/forks", "score": 131.65042, "deployments_url": "https://api.github.com/repos/WordPress/WordPress/deployments", "contributors_url": "https://api.github.com/repos/WordPress/WordPress/contributors", "homepage": "https://wordpress.org/", "contents_url": "https://api.github.com/repos/WordPress/WordPress/contents/{+path}", "has_downloads": true, "collaborators_url": "https://api.github.com/repos/WordPress/WordPress/collaborators{/collaborator}", "created_at": "2011-12-01T07:05:17Z", "git_commits_url": "https://api.github.com/repos/WordPress/WordPress/git/commits{/sha}", "releases_url": "https://api.github.com/repos/WordPress/WordPress/releases{/id}", "private": false, "pulls_url": "https://api.github.com/repos/WordPress/WordPress/pulls{/number}", "git_tags_url": "https://api.github.com/repos/WordPress/WordPress/git/tags{/sha}", "notifications_url": "https://api.github.com/repos/WordPress/WordPress/notifications{?since,all,participating}", "language": "PHP", "updated_at": "2017-12-02T15:23:47Z", "has_wiki": false, "downloads_url": "https://api.github.com/repos/WordPress/WordPress/downloads", "hooks_url": "https://api.github.com/repos/WordPress/WordPress/hooks", "languages_url": "https://api.github.com/repos/WordPress/WordPress/languages", "default_branch": "master", "labels_url": "https://api.github.com/repos/WordPress/WordPress/labels{/name}", "url": "https://api.github.com/repos/WordPress/WordPress", "has_pages": false, "tags_url": "https://api.github.com/repos/WordPress/WordPress/tags", "clone_url": "https://github.com/WordPress/WordPress.git", "archive_url": "https://api.github.com/repos/WordPress/WordPress/{archive_format}{/ref}", "has_issues": false, "issue_comment_url": "https://api.github.com/repos/WordPress/WordPress/issues/comments{/number}", "subscription_url": "https://api.github.com/repos/WordPress/WordPress/subscription"}, "pullRequests": [], "format": "markdown", "image": ["https://res.cloudinary.com/hpiynhbhq/image/upload/v1512329720/r6l1umsqovxiaa9h8ukf.png"], "links": ["https://res.cloudinary.com/hpiynhbhq/image/upload/v1512329720/r6l1umsqovxiaa9h8ukf.png", "https://developer.wordpress.org/reference/functions/add_meta_box/", "https://codex.wordpress.org/WordPress_Nonces", "https://res.cloudinary.com/hpiynhbhq/image/upload/v1512328709/yuwevkkrk2n6ue3ytdsk.png", "https://res.cloudinary.com/hpiynhbhq/image/upload/v1512328994/uxcznymiaqp5euuqabta.png", "https://res.cloudinary.com/hpiynhbhq/image/upload/v1512328962/worfqghmtps1wwwtzbyr.png", "https://steemit.com/utopian-io/@mcfarhat/wordpress-series-creating-a-custom-post-type-part-1", "https://steemit.com/utopian-io/@mcfarhat/wordpress-series-coding-your-way-via-plugins", "https://utopian.io/utopian-io/@mcfarhat/how-to-properly-customize-your-wordpress-installation-via-coding", "https://utopian.io/utopian-io/@mcfarhat/securing-your-wordpress-installation"], "app": "utopian/1.0.0", "platform": "github", "tags": ["utopian-io", "wordpress", "steemstem", "mapsters", "steemitbloggers"], "community": "utopian", "users": ["mcfarhat", "arabsteem", "steemstem", "accelerator"]}"
created2017-12-03 19:37:51
last_update2017-12-03 20:08:36
depth0
children13
net_rshares32,558,308,674,609
last_payout2017-12-10 19:37:51
cashout_time1969-12-31 23:59:59
total_payout_value79.612 SBD
curator_payout_value28.872 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length11,141
author_reputation104,178,422,702,645
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries
0.
accountarie.steem
weight47
1.
accountfreedom
weight658
2.
accountfurion
weight6
3.
accountknowledges
weight46
4.
accountnetuoso
weight6
5.
accounttransisto
weight70
6.
accountutopian-io
weight536
7.
accountxeldal
weight27
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (164)
@qurator ·
Quratorcomment
<center>Qurator</center> | <center>Your Quality Content Curator</center>
-|-|
![](https://steemitimages.com/DQmNzJZFNXnViq9Ebmccf3rLi7kiYrcHFnFqeKK7QnWYtRs/COMMENT.png) | This post has been upvoted and given the stamp of authenticity by @qurator. To join the quality content creators and receive daily upvotes click [here](https://steemit.com/qurator/@qurator/qurator-update-cheaper-tier-access-and-increased-registration-fee) for more info. 
<center>*Qurator's exclusive support bot is now live. For more info click [HERE](https://steemit.com/qurator/@qurator/qurator-support-bot-alive-and-active-welcome-to-qustodian) or send some SBD and your link to @qustodian to get even more support.*</center>
properties (22)
post_id19,389,616
authorqurator
permlinkre-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171203t195651166z
categoryutopian-io
json_metadata{}
created2017-12-03 19:57:09
last_update2017-12-03 19:57:09
depth1
children0
net_rshares0
last_payout2017-12-10 19:57:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length700
author_reputation582,848,328,798,482
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@tensor ·
$0.03
Very well written post on WordPress.  Also, considering some 80% of the web is built in PhP, its helpful to have these types of tutorials for budding programmers.
👍  
properties (23)
post_id19,408,188
authortensor
permlinkre-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171204t015732126z
categoryutopian-io
json_metadata"{"app": "steemit/0.1", "tags": ["utopian-io"]}"
created2017-12-04 01:57:27
last_update2017-12-04 01:57:27
depth1
children2
net_rshares9,780,549,617
last_payout2017-12-11 01:57:27
cashout_time1969-12-31 23:59:59
total_payout_value0.026 SBD
curator_payout_value0.008 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length162
author_reputation87,767,420,253,600
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@pangoli ·
Wow! It's Sir @tensor. Watched a part of your video on Rust. Had no idea what was going on. But I loved that you put in the time to help people on here.
properties (22)
post_id19,433,726
authorpangoli
permlinkre-tensor-re-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171204t100940862z
categoryutopian-io
json_metadata"{"app": "steemit/0.1", "users": ["tensor"], "tags": ["utopian-io"]}"
created2017-12-04 10:09:51
last_update2017-12-04 10:09:51
depth2
children0
net_rshares0
last_payout2017-12-11 10:09:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length152
author_reputation78,423,179,244,099
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@mcfarhat ·
Thank you !
properties (22)
post_id19,470,201
authormcfarhat
permlinkre-tensor-re-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171204t190218008z
categoryutopian-io
json_metadata"{"app": "steemit/0.1", "tags": ["utopian-io"]}"
created2017-12-04 19:02:21
last_update2017-12-04 19:02:21
depth2
children0
net_rshares0
last_payout2017-12-11 19:02:21
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length11
author_reputation104,178,422,702,645
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@simnrodrguez ·
Thank you for the contribution. It has been approved.

You can contact us on [Discord](https://discord.gg/UCvqCsx).
**[[utopian-moderator]](https://utopian.io/moderators)**
properties (22)
post_id19,408,232
authorsimnrodrguez
permlinkre-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171204t015817838z
categoryutopian-io
json_metadata"{"app": "busy/1.0.0", "community": "busy", "tags": ["utopian-io"]}"
created2017-12-04 01:58:12
last_update2017-12-04 01:58:12
depth1
children0
net_rshares0
last_payout2017-12-11 01:58:12
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length172
author_reputation40,530,109,565,626
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@pangoli ·
$0.03
Really helpful post.. I did miss the first post though. I'll go right back to read through and note down helpful tips. Thanks
👍  
properties (23)
post_id19,433,647
authorpangoli
permlinkre-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171204t100814621z
categoryutopian-io
json_metadata"{"app": "steemit/0.1", "tags": ["utopian-io"]}"
created2017-12-04 10:08:21
last_update2017-12-04 10:08:21
depth1
children1
net_rshares9,572,452,816
last_payout2017-12-11 10:08:21
cashout_time1969-12-31 23:59:59
total_payout_value0.026 SBD
curator_payout_value0.008 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length125
author_reputation78,423,179,244,099
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@mcfarhat ·
Glad to hear Pangoli :)
properties (22)
post_id19,470,240
authormcfarhat
permlinkre-pangoli-re-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171204t190249891z
categoryutopian-io
json_metadata"{"app": "steemit/0.1", "tags": ["utopian-io"]}"
created2017-12-04 19:02:51
last_update2017-12-04 19:02:51
depth2
children0
net_rshares0
last_payout2017-12-11 19:02:51
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length23
author_reputation104,178,422,702,645
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@financefreedom ·
https://youtu.be/Sik0p7ohndw
properties (22)
post_id19,442,992
authorfinancefreedom
permlinkre-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171204t124908754z
categoryutopian-io
json_metadata"{"app": "steemit/0.1", "links": ["https://youtu.be/Sik0p7ohndw"], "image": ["https://img.youtube.com/vi/Sik0p7ohndw/0.jpg"], "tags": ["utopian-io"]}"
created2017-12-04 12:49:09
last_update2017-12-04 12:49:09
depth1
children0
net_rshares0
last_payout2017-12-11 12:49:09
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length28
author_reputation89,811,786,096
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@utopian-io ·
$0.08
### Hey @mcfarhat I am @utopian-io. I have just upvoted you!
#### Achievements
- You have less than 500 followers. Just gave you a gift to help you succeed!
- You are generating more rewards than average for this category. Super!;)
- Seems like you contribute quite often. AMAZING!
#### Community-Driven Witness!
I am the first and only Steem Community-Driven Witness. <a href="https://discord.gg/zTrEMqB">Participate on Discord</a>. Lets GROW TOGETHER!
- <a href="https://v2.steemconnect.com/sign/account-witness-vote?witness=utopian-io&approve=1">Vote for my Witness With SteemConnect</a>
- <a href="https://v2.steemconnect.com/sign/account-witness-proxy?proxy=utopian-io&approve=1">Proxy vote to Utopian Witness with SteemConnect</a>
- Or vote/proxy on <a href="https://steemit.com/~witnesses">Steemit Witnesses</a>

[![mooncryption-utopian-witness-gif](https://steemitimages.com/DQmYPUuQRptAqNBCQRwQjKWAqWU3zJkL3RXVUtEKVury8up/mooncryption-s-utopian-io-witness-gif.gif)](https://steemit.com/~witnesses)

**Up-vote this comment to grow my power and help Open Source contributions like this one. Want to chat? Join me on Discord https://discord.gg/Pc8HG9x**
👍  
properties (23)
post_id19,450,240
authorutopian-io
permlinkre-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171204t143536415z
categoryutopian-io
json_metadata"{"app": "utopian/1.0.0", "community": "utopian", "tags": ["utopian-io"]}"
created2017-12-04 14:35:36
last_update2017-12-04 14:35:36
depth1
children0
net_rshares21,826,184,977
last_payout2017-12-11 14:35:36
cashout_time1969-12-31 23:59:59
total_payout_value0.060 SBD
curator_payout_value0.018 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length1,159
author_reputation152,913,012,544,965
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
author_curate_reward""
vote details (1)
@gilangarif131294 ·
Thank you for this excellent information @mcfarhat
properties (22)
post_id19,522,038
authorgilangarif131294
permlinkre-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20171205t104900602z
categoryutopian-io
json_metadata"{"app": "steemit/0.1", "users": ["mcfarhat"], "tags": ["utopian-io"]}"
created2017-12-05 10:49:03
last_update2017-12-05 10:49:03
depth1
children0
net_rshares0
last_payout2017-12-12 10:49:03
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length50
author_reputation6,936,032,367,043
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000
@qanon1111 ·
Great stuffn
properties (22)
post_id42,743,547
authorqanon1111
permlinkre-mcfarhat-wordpress-series-creating-a-custom-post-type-part-2-20180409t092520215z
categoryutopian-io
json_metadata"{"app": "utopian/1.0.0", "community": "utopian", "tags": ["utopian-io"]}"
created2018-04-09 09:25:24
last_update2018-04-09 09:25:24
depth1
children0
net_rshares0
last_payout2018-04-16 09:25:24
cashout_time1969-12-31 23:59:59
total_payout_value0.000 SBD
curator_payout_value0.000 SBD
pending_payout_value0.000 SBD
promoted0.000 SBD
body_length12
author_reputation-285,466,766,349
root_title"Wordpress Series: Creating a Custom Post Type (Part 2)"
beneficiaries[]
max_accepted_payout1,000,000.000 SBD
percent_steem_dollars10,000