Demystifying Custom Post Types and Taxonomies - Tracey Kemp - WordCamp Sydney 2012
Upcoming SlideShare
Loading in...5
×
 

Demystifying Custom Post Types and Taxonomies - Tracey Kemp - WordCamp Sydney 2012

on

  • 3,308 views

Tracey Kemp takes us through the use of Custom Post Types and Taxonomies in Wordpress 3+ #wcsyd

Tracey Kemp takes us through the use of Custom Post Types and Taxonomies in Wordpress 3+ #wcsyd

Statistics

Views

Total Views
3,308
Views on SlideShare
3,143
Embed Views
165

Actions

Likes
2
Downloads
40
Comments
0

8 Embeds 165

http://localhost 125
http://2012.sydney.wordcamp.org 21
http://vrindavijayan.blogspot.in 9
https://twimg0-a.akamaihd.net 4
https://si0.twimg.com 3
http://development.interact-intranet.com 1
http://us-w1.rockmelt.com 1
https://twitter.com 1
More...

Accessibility

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Demystifying Custom Post Types and Taxonomies - Tracey Kemp - WordCamp Sydney 2012 Demystifying Custom Post Types and Taxonomies - Tracey Kemp - WordCamp Sydney 2012 Presentation Transcript

  • DEMYSTIFYINGCUSTOM POSTTYPES &TAXONOMIESTracey Kemp@dogshindleg
  • ➡ Registering Custom Post Types and Taxonomies➡ A plugin that can help➡ Displaying content from custom post types and taxonomies➡ Resources
  • FINAL RESULTA record label site withartists and their releases.
  • PLANNINGWhat will be a custom post type andwhat will be a taxonomy?Custom Post Type Taxonomy Custom Post Type Taxonomy TaxonomyArtist Location Release Artist YearThe Drones VIC Here Come The Lies The Drones 2002The Kill Devil Hills WA Wait Long By The River The Drones 2005Midget NSW / QLD Gala Mill The Drones 2006Front End Loader NSW Havilah The Drones 2008Dan Kelly VIC Heathen Songs The Kill Devil Hills 2004 The Drought The Kill Devil Hills 2006 Man, You Should Explode The Kill Devil Hills 2010 Vagus Wandering Midget 1994 The Toggle Switch Midget 1997 Total Abandonment Of Better Midget 1998 Understanding
  • REGISTERCUSTOMPOSTTYPES
  • REGISTER function register_custom_post_types() { // register post types hereCUSTOM }POST add_action(‘init’, ‘register_custom_post_types’);TYPES
  • function register_custom_post_types() { register_post_type( ‘artists’, array( ‘labels’ => array(REGISTER ‘name’ => _x(‘Artists’, ‘post type general name’), ‘singular_name’ => __( ‘Artist’, ‘taxonomy singular name’ ),ARTISTS ‘all_items’ => __( ‘All Artists’ ), ‘edit_item’ => __( ‘Edit Artist’ ), ‘add_new_item’ => __( ‘Add New Artist’ ), ‘new_item_name’ => __( ‘New Artist’ ), ), ‘public’ => true, ‘show_ui’ => true, ‘hierarchical’ => true, ‘supports’ => array (‘title’,‘editor’, ‘thumbnail’) ) ); } add_action(‘init’, ‘register_custom_post_types’);
  • function register_custom_post_types() { register_post_type( ‘artists’, array( ‘labels’ => array( ‘name’ => _x(‘Artists’, ‘post type general name’),REGISTER ‘singular_name’ => __( ‘Artist’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Artists’ ), ‘edit_item’ => __( ‘Edit Artist’ ),ARTISTS ‘add_new_item’ => __( ‘Add New Artist’ ), ‘new_item_name’ => __( ‘New Artist’ ), ), ‘public’ => true, ‘show_ui’ => true, ‘hierarchical’ => true, ‘supports’ => array (‘title’,‘editor’, ‘thumbnail’) ) );REGISTERRELEASES } add_action(‘init’, ‘register_custom_post_types’);
  • function register_custom_post_types() { register_post_type( ‘artists’, array( ‘labels’ => array( ‘name’ => _x(‘Artists’, ‘post type general name’),REGISTER ‘singular_name’ => __( ‘Artist’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Artists’ ), ‘edit_item’ => __( ‘Edit Artist’ ),ARTISTS ‘add_new_item’ => __( ‘Add New Artist’ ), ‘new_item_name’ => __( ‘New Artist’ ), ), ‘public’ => true, ‘show_ui’ => true, ‘hierarchical’ => true, ‘supports’ => array (‘title’,‘editor’, ‘thumbnail’) ) ); register_post_type( ‘releases’, array( ‘labels’ => array( ‘name’ => _x(‘Releases’, ‘post type general name’),REGISTER ‘singular_name’ => __( ‘Release’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Releases’ ),RELEASES ‘edit_item’ => __( ‘Edit Release’ ), ‘add_new_item’ => __( ‘Add New Release’ ), ‘new_item_name’ => __( ‘New Release’ ), ), ‘public’ => true, ‘show_ui’ => true, ‘hierarchical’ => true, ‘supports’ => array (‘title’, ‘editor’, ‘thumbnail’) ) ); } add_action(‘init’, ‘register_custom_post_types’);
  • function register_custom_post_types() { register_post_type( ‘artists’, array( ‘labels’ => array( ‘name’ => _x(‘Artists’, ‘post type general name’),REGISTER ‘singular_name’ => __( ‘Artist’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Artists’ ), ‘edit_item’ => __( ‘Edit Artist’ ),ARTISTS ‘add_new_item’ => __( ‘Add New Artist’ ), ‘new_item_name’ => __( ‘New Artist’ ), ), ‘public’ => true, ‘show_ui’ => true, ‘hierarchical’ => true, ‘supports’ => array (‘title’,‘editor’, ‘thumbnail’) ) ); register_post_type( ‘releases’, array( ‘labels’ => array( ‘name’ => _x(‘Releases’, ‘post type general name’),REGISTER ‘singular_name’ => __( ‘Release’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Releases’ ),RELEASES ‘edit_item’ => __( ‘Edit Release’ ), ‘add_new_item’ => __( ‘Add New Release’ ), ‘new_item_name’ => __( ‘New Release’ ), ), ‘public’ => true, ‘show_ui’ => true, ‘hierarchical’ => true, ‘supports’ => array (‘title’, ‘editor’, ‘thumbnail’) ) ); } add_action(‘init’, ‘register_custom_post_types’);
  • REGISTERTAXONOMIES
  • REGISTER function register_taxonomies() {TAXO // register post types hereNOMIES } add_action(‘init’, ‘register_taxonomies’, 0);
  • function register_taxonomies() { $labels = array( ‘name’ => _x( ‘Location’, ‘taxonomy general name’ ), ‘singular_name’ => _x( ‘Location’, ‘taxonomy singular name’ ),REGISTER ‘all_items’ => __( ‘All Locations’ ), ‘edit_item’ => __( ‘Edit Location’ ),LOCATION ‘add_new_item’ => __( ‘Add New Location’ ), ‘menu_name’ => __( ‘Locations’ ), ); register_taxonomy( ‘locations’, array(‘artists’), // post-type(s) array( ‘hierarchical’ => true, ‘labels’ => $labels, ‘show_ui’ => true, ) ); } add_action(‘init’, ‘register_taxonomies’, 0);
  • function register_taxonomies() { $labels = array( ‘name’ => _x( ‘Location’, ‘taxonomy general name’ ), ‘singular_name’ => _x( ‘Location’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Locations’ ), ‘edit_item’ => __( ‘Edit Location’ ),REGISTER ‘add_new_item’ => __( ‘Add New Location’ ), ‘menu_name’ => __( ‘Locations’ ), );LOCATION register_taxonomy( ‘locations’, array(‘artists’), // post-type(s) array( ‘hierarchical’ => true, ‘labels’ => $labels, ‘show_ui’ => true, ) );REGISTERRELEASEYEAR } add_action(‘init’, ‘register_taxonomies’, 0);
  • function register_taxonomies() { $labels = array( ‘name’ => _x( ‘Location’, ‘taxonomy general name’ ), ‘singular_name’ => _x( ‘Location’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Locations’ ), ‘edit_item’ => __( ‘Edit Location’ ),REGISTER ‘add_new_item’ => __( ‘Add New Location’ ), ‘menu_name’ => __( ‘Locations’ ), );LOCATION register_taxonomy( ‘locations’, array(‘artists’), // post-type(s) array( ‘hierarchical’ => true, ‘labels’ => $labels, ‘show_ui’ => true, ) ); $labels = array( ‘name’ => _x( ‘Release Year’, ‘taxonomy general name’ ), ‘singular_name’ => _x( ‘Release Year’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Release Years’ ), ‘edit_item’ => __( ‘Edit Release Year’ ), ‘add_new_item’ => __( ‘Add New Release Year’ ), ‘menu_name’ => __( ‘Release Years’ ),REGISTER ); register_taxonomy( ‘release-year’,RELEASE array(‘releases’), // post-type(s) array(YEAR ‘hierarchical’ => true, ‘labels’ => $labels, ‘show_ui’ => true, ) ); } add_action(‘init’, ‘register_taxonomies’, 0);
  • function register_taxonomies() { $labels = array( ‘name’ => _x( ‘Location’, ‘taxonomy general name’ ), ‘singular_name’ => _x( ‘Location’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Locations’ ), ‘edit_item’ => __( ‘Edit Location’ ),REGISTER ‘add_new_item’ => __( ‘Add New Location’ ), ‘menu_name’ => __( ‘Locations’ ), );LOCATION register_taxonomy( ‘locations’, array(‘artists’), // post-type(s) array( ‘hierarchical’ => true, ‘labels’ => $labels, ‘show_ui’ => true, ) ); $labels = array( ‘name’ => _x( ‘Release Year’, ‘taxonomy general name’ ), ‘singular_name’ => _x( ‘Release Year’, ‘taxonomy singular name’ ), ‘all_items’ => __( ‘All Release Years’ ), ‘edit_item’ => __( ‘Edit Release Year’ ), ‘add_new_item’ => __( ‘Add New Release Year’ ), ‘menu_name’ => __( ‘Release Years’ ),REGISTER ); register_taxonomy( ‘release-year’,RELEASE array(‘releases’), // post-type(s) array(YEAR ‘hierarchical’ => true, ‘labels’ => $labels, ‘show_ui’ => true, ) ); } add_action(‘init’, ‘register_taxonomies’, 0);
  • USING ACUSTOM POSTTYPE AS ATAXONOMY
  • DISPLAYARTISTS
  • DISPLAYARTISTS<?php //artists posts$artist_args=array( post_type => artists, posts_per_page => -1,);$artist_query = null;$artist_query = new WP_Query($artist_args);if( $artist_query->have_posts() ) { while ($artist_query->have_posts()) : $artist_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <h2><?php the_title(); ?></h2> <?php the_excerpt(); ?> </article><?php endwhile; } wp_reset_query(); ?>
  • DISPLAY ARTISTSWITH LOCATIONS<?php //artists posts$artist_args=array( post_type => artists, posts_per_page => -1,);$artist_query = null;$artist_query = new WP_Query($artist_args);if( $artist_query->have_posts() ) { while ($artist_query->have_posts()) : $artist_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <h2><?php the_title(); ?></h2> <?php echo get_the_term_list( $post->ID, ‘locations’, ‘From: ’, ‘ / ‘, ‘’ ); ?> <?php the_excerpt(); ?> </article><?php endwhile; } wp_reset_query(); ?>
  • DISPLAY ARTISTSWITH LOCATIONS<?php //artists posts$artist_args=array( post_type => artists, posts_per_page => -1,); <?php echo get_the_term_list( $id, $taxonomy, $before, $sep, $after ) ?>$artist_query = null;$artist_query = new WP_Query($artist_args); <?php echo get_the_term_list( $post->ID, ‘locations’, ‘From: ’, ‘ / ‘, ‘’ ); ?>if( $artist_query->have_posts() ) { while ($artist_query->have_posts()) : $artist_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <h2><?php the_title(); ?></h2> <?php echo get_the_term_list( $post->ID, ‘locations’, ‘From: ’, ‘ / ‘, ‘’ ); ?> <?php the_excerpt(); ?> </article><?php endwhile; } wp_reset_query(); ?>
  • DISPLAYRELEASES<?php //releases posts$release_args=array( post_type => releases, posts_per_page => -1,);$release_query = null;$release_query = new WP_Query($release_args);if( $release_query->have_posts() ) { while ($release_query->have_posts()) : $release_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <?php the_title(); ?> <?php echo get_the_term_list( $post->ID, ‘release-year’, ‘(’, ‘‘, ‘)’ ); ?> </article><?php endwhile; } wp_reset_query(); ?>
  • DISPLAYRELEASES<?php //releases posts$release_args=array( post_type => releases, posts_per_page => -1,);$release_query = null;$release_query = new WP_Query($release_args);if( $release_query->have_posts() ) { while ($release_query->have_posts()) : $release_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <?php the_title(); ?> <?php echo get_the_term_list( $post->ID, ‘release-year’, ‘(’, ‘‘, ‘)’ ); ?> </article><?php endwhile; } wp_reset_query(); ?>
  • HOW DO WE SHOW ARTISTS WITH RELEASES?
  • <?php //artists posts $artist_args=array( post_type => artists,DISPLAY posts_per_page => -1,ARTISTS ); $artist_query = null; $artist_query = new WP_Query($artist_args); if( $artist_query->have_posts() ) { while ($artist_query->have_posts()) : $artist_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <h2><?php the_title(); ?></h2> <?php echo get_the_term_list( $post->ID, ‘locations’, ‘From: ’, ‘ / ‘, ‘’ ); ?> <?php the_excerpt(); ?> //insert releases here </article> <?php endwhile; } wp_reset_query(); ?>
  • while ($artist_query->have_posts()) : $artist_query->the_post(); ?>DISPLAY <article> <?php the_post_thumbnail(); ?>ARTISTS <h2><?php the_title(); ?></h2> <?php echo get_the_term_list( $post->ID, ‘locations’, ‘From: ’, ‘ / ‘, ‘’ ); ?> <?php the_excerpt(); ?> <?php //releases posts $release_args=array( post_type => releases, posts_per_page => -1,DISPLAY ); $release_query = null;RELEASES $release_query = new WP_Query($release_args); if( $release_query->have_posts() ) { while ($release_query->have_posts()) : $release_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <?php the_title(); ?> <?php echo get_the_term_list( $post->ID, ‘release-year’, ‘(’, ‘‘, ‘)’ ); ? </article> <?php endwhile; } wp_reset_query(); ?> </article>
  • while ($artist_query->have_posts()) : $artist_query->the_post(); ?>DISPLAY <article> <?php the_post_thumbnail(); ?>ARTISTS <h2><?php the_title(); ?></h2> <?php echo get_the_term_list( $post->ID, ‘locations’, ‘From: ’, ‘ / ‘, ‘’ ); ?> <?php the_excerpt(); ?>GET ARTIST TITLE <?php //releases posts $release_args=array( post_type => releases, posts_per_page => -1, );DISPLAY $release_query = null; $release_query = new WP_Query($release_args);RELEASES if( $release_query->have_posts() ) { while ($release_query->have_posts()) : $release_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <?php the_title(); ?> <?php echo get_the_term_list( $post->ID, ‘release-year’, ‘(’, ‘‘, ‘)’ ); ? </article>
  • while ($artist_query->have_posts()) : $artist_query->the_post(); ?>DISPLAY <article> <?php the_post_thumbnail(); ?>ARTISTS <h2><?php the_title(); ?></h2> <?php echo get_the_term_list( $post->ID, ‘locations’, ‘From: ’, ‘ / ‘, ‘’ ); ?> <?php the_excerpt(); ?>GET ARTIST TITLE <?php $tax_artist = get_the_title(); ?> <?php //releases posts $release_args=array( post_type => releases, posts_per_page => -1, );DISPLAY $release_query = null; $release_query = new WP_Query($release_args);RELEASES if( $release_query->have_posts() ) { while ($release_query->have_posts()) : $release_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <?php the_title(); ?> <?php echo get_the_term_list( $post->ID, ‘release-year’, ‘(’, ‘‘, ‘)’ ); ? </article>
  • while ($artist_query->have_posts()) : $artist_query->the_post(); ?>DISPLAY <article> <?php the_post_thumbnail(); ?>ARTISTS <h2><?php the_title(); ?></h2> <?php echo get_the_term_list( $post->ID, ‘locations’, ‘From: ’, ‘ / ‘, ‘’ ); ?> <?php the_excerpt(); ?>GET ARTIST TITLE <?php $tax_artist = get_the_title(); ?> <?php //releases posts $release_args=array( post_type => releases,$taxonomy => $term artists => $tax_artist, posts_per_page => -1, ); $release_query = null; $release_query = new WP_Query($release_args); if( $release_query->have_posts() ) {DISPLAY while ($release_query->have_posts()) : $release_query->the_post(); ?>RELEASES <article> <?php the_post_thumbnail(); ?> <?php the_title(); ?> <?php echo get_the_term_list( $post->ID, ‘release-year’, ‘(’, ‘‘, ‘)’ ); ? </article>
  • <?php //artists posts $artist_args=array( post_type => artists,START ); posts_per_page => -1,ARTISTS $artist_query = null; $artist_query = new WP_Query($artist_args);QUERY if( $artist_query->have_posts() ) { while ($artist_query->have_posts()) : $artist_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <h2><?php the_title(); ?></h2> <?php echo get_the_term_list( $post->ID, ‘locations’, ‘From: ’, ‘ / ‘, ‘’ ); ?> <?php the_excerpt(); ?>GET ARTIST TITLE <?php $tax_artist = get_the_title(); ?> <?php //releases posts $release_args=array(START RELEASES QUERY post_type => releases,$taxonomy => $term artists => $tax_artist, posts_per_page => -1, ); $release_query = null; $release_query = new WP_Query($release_args); if( $release_query->have_posts() ) { while ($release_query->have_posts()) : $release_query->the_post(); ?> <article> <?php the_post_thumbnail(); ?> <?php the_title(); ?> <?php echo get_the_term_list( $post->ID, ‘release-year’, ‘(’, ‘‘, ‘)’ ); ?> </article>CLOSE RELEASES <?php endwhile; } wp_reset_query(); ?>CLOSE </article>ARTISTS <?php endwhile; } wp_reset_query(); ?>
  • RESOURCESWordPress Codex & Forumshttp://codex.wordpress.org/http://wordpress.org/support/Register Custom Post Typeshttp://codex.wordpress.org/Function_Reference/register_post_typeRegister Taxonomieshttp://codex.wordpress.org/Function_Reference/register_taxonomyQuery Postshttp://codex.wordpress.org/Function_Reference/query_postsThe Loophttp://codex.wordpress.org/The_Loop
  • RESOURCESPluginsCPT-onomies: Using Custom Post Types as Taxonomieshttp://wordpress.org/extend/plugins/cpt-onomies/
  • DEMYSTIFYINGCUSTOM POSTTYPES &TAXONOMIESTracey Kemp@dogshindlegFull code samples and explanationsdogshindleg.com