Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Custom Post Types
Search
Jenny Wong
April 26, 2014
Technology
0
150
Custom Post Types
A introductory guide to WordPress Custom Post Types. Presented at WordCamp Sheffield 2014
Jenny Wong
April 26, 2014
Tweet
Share
More Decks by Jenny Wong
See All by Jenny Wong
The Road Taken
missjwo
0
190
Why and how to do a Site Health Check
missjwo
0
80
Getting ready for PHP7.2
missjwo
0
2.5k
is it possible to build a truly diverse community?
missjwo
0
370
Going Backstage on Community Trends: Bug or Feature?
missjwo
1
240
We Didn’t Care About Diversity — What Happened Next Is Amazing!
missjwo
0
260
Building on WordPress for Enterprise
missjwo
0
100
Building an Accessible Community - AlterConf Dublin Edition
missjwo
0
100
Building an Accessible Community
missjwo
2
230
Other Decks in Technology
See All in Technology
BigQuery Remote FunctionでLooker Studioをインタラクティブ化
cuebic9bic
2
230
JSX - 歴史を振り返り、⾯⽩がって、エモくなろう
pal4de
3
1.1k
Uniadex__公開版_20250617-AIxIoTビジネス共創ラボ_ツナガルチカラ_.pdf
iotcomjpadmin
0
150
白金鉱業Meetup_Vol.19_PoCはデモで語れ!顧客の本音とインサイトを引き出すソリューション構築
brainpadpr
2
490
20250625 Snowflake Summit 2025活用事例 レポート / Nowcast Snowflake Summit 2025 Case Study Report
kkuv
1
230
Agentic Workflowという選択肢を考える
tkikuchi1002
1
400
rubygem開発で鍛える設計力
joker1007
1
140
Amazon Bedrockで実現する 新たな学習体験
kzkmaeda
1
410
標準技術と独自システムで作る「つらくない」SaaS アカウント管理 / Effortless SaaS Account Management with Standard Technologies & Custom Systems
yuyatakeyama
2
1k
「Chatwork」の認証基盤の移行とログ活用によるプロダクト改善
kubell_hr
1
100
IIWレポートからみるID業界で話題のMCP
fujie
0
740
OAuth/OpenID Connectで実現するMCPのセキュアなアクセス管理
kuralab
5
880
Featured
See All Featured
The Power of CSS Pseudo Elements
geoffreycrofte
77
5.8k
Site-Speed That Sticks
csswizardry
10
650
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Bootstrapping a Software Product
garrettdimon
PRO
307
110k
JavaScript: Past, Present, and Future - NDC Porto 2020
reverentgeek
48
5.4k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
667
120k
BBQ
matthewcrist
89
9.7k
How STYLIGHT went responsive
nonsquared
100
5.6k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Automating Front-end Workflow
addyosmani
1370
200k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.5k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
367
26k
Transcript
Hello WC Shef+ield! Jenny Wong : Web Developer : @miss_jwo
Custom Post Types Jenny Wong : Web Developer : @miss_jwo
Fast Talker Feel free to ask me to slow down.
Its good for me.
Content The most important thing about a site.
Post Types WordPress deals with all the different type of
content by de+ining them based on what they are. ! The de+initions are called Post Types.
Post Types ! •Post •Page •Attachments •Revision
•Nav Menus } Defaults
Custom Post Types CPT for short.
Post Types ! •Post •Page •Attachments •Revision
•Nav Menus
Custom Post Types • Post • Page •
Attachments • Revision • Nav Menus •News •Staff … anything from Jen’s head
Why?
Advantages •Hides content from the default query •Management of
content is easier •Improved user interface & usability •The ability to use custom templates
Disadvantages •Performance issue with querying a large table
•If content doesn’t easily +it the post type tables then issues can occur.
Where do CPTs live? The Options
Theme •CPT attached to the theme •Activate Theme &
CPT will appear •Deactivate theme: • User cannot access their CPT data • Data still stored in the database
Plugin • Functionality is separate to the design of
the website •Can activate new theme without functionality disappearing •Plugins can be deactivated
Must Use Plugin mu plugin for short.
Must Use Plugin
Must Use Plugin https://codex.wordpress.org/Must_Use_Plugins
The Code
Register New CPT
Register New CPT <?php ! ! register_post_type( $post_type, $args );!
! $post_type! - Name of post type! $args! ! ! -! An array of arguments.! ! ! ! !
Register New CPT <?php ! ! register_post_type( $post_type, $args );!
! $post_type! - Name of post type! $args! ! ! -! An array of arguments.! ! Full arguments list: ! https://codex.wordpress.org/Function_Reference/register_post_type#Arguments! ! !
CPT in action <?php ! ! function cpt_wcsheff () {!
! ! $args = array( … );! ! ! register_post_type(‘speakers’, $args );! ! }! ! add_action( 'init','cpt_wcsheff');! !
Categories & Tags
Categories & Tags ! Default taxonomy: • category
• post_tag
Categories & Tags function cpt_wcsheff () {! ! …! !
register_post_type(‘speakers’, $args );! ! ! register_taxonomy_for_object_type( ! ! ! 'category', 'speakers' ! ! );! ! ! register_taxonomy_for_object_type( ! ! ! 'post_tag', 'speakers' ! ! );! }!
Custom Taxonomies
Custom Category $post_types = array(‘speakers’);! ! $category_args = array(! !
'hierarchical' => true ! );! ! register_taxonomy( ! ! 'custom_cat', ! ! $post_types,! ! $category_args! );! !
Custom Tag $post_types = array(‘speakers’);! ! $category_args = array(! !
'hierarchical' => false ! );! ! register_taxonomy( ! ! 'custom_tag', ! ! $post_types,! ! $category_args! );! !
Custom Taxonomies https://codex.wordpress.org/ Function_Reference/register_taxonomy
Templating
Custom Templates ! archive-‐$post_type.php archive.php ! single-‐$post_type.php
single.php ! taxonomy-‐$taxonomy-‐$term.php taxonomy-‐$taxonomy.php taxonomy.php
Condition Tags ! is_post_type_hierarchical( $post_type ); ! is_post_type_archive( $post_type
); ! post_type_exists( $post_type ) ; !
Common Issues
Permalinks URL that points to a particular location !
http://codex.wordpress.org/Using_Permalinks
Permalinks Issue: 404 error on a single CPT page
Flushing Permalinks ATTENTION: You should *NEVER EVER* do this on
every page load!!
Flushing in a plugin function cpt_wcsheff() {! register_post_type( ... );!
}! ! ! function my_rewrite_flush() {! cpt_wcsheff();! flush_rewrite_rules();! }! ! ! register_activation_hook( ! ! __FILE__, ! ! 'my_rewrite_flush' ! );! ! !
Flushing in a theme function cpt_wcsheff() {! register_post_type( ... );!
}! ! ! function cpt_wcsheff_rewrite_flush() {! flush_rewrite_rules();! }! ! add_action( ! ! 'after_switch_theme', ! 'cpt_wcsheff_rewrite_flush' ! );! ! !
Permalinks https://codex.wordpress.org/Function_Reference/ register_post_type#Flushing_Rewrite_on_Activation
Slugs
Slugs ! example.com/permalinks/slugs ! example.com/slugs !
CPT Naming
CPT Naming Permalink Structure: ! $custom_post_type =
‘wc_shef+ield’; $custon_tax = ‘wc_shef+ield’; ! example.com/$custom_post_type/post_slug ! example.com/$custom_tax/another_slug
Questions?
Ask me later Jenny Wong : Web Developer : @miss_jwo