SlideShare a Scribd company logo
1 of 68
WordPress Plugin #3
May 21st, 2015
changwoo
Recap
Hooks in Nutshell
● Hook is an event
● Plugin is hook-driven
● Task separation
o Changing core's workflow: action
o Modifying contents: filter
o In fact, action and filter are the same
Recap
Hooks in Nutshell
● Callback function utility
● You can define your own hooks
● There are many predefined hooks
Recap
Datbase Nutshell
● Parent-meta strategy
o Flexiblility
o Extendible
o But can experience some defects
● Meta key, meta value
o Hash-like storage
Recap
Database Nutshell
● Term, taxonomy
o Term: a word
o Taxonomy: a classification of words
● There are some pre-defined terms, and
taxonomies
o category (hierarchical), post_tag (flat)
Recap
Today's Topics
1.Entry Points in Plugin
a. Menu
b. Shortcodes
c. Admin Post
d. Ajax
e. Redirect
f. activation, deactivation, uninstall
2.Managing Your Own Contents
a. All About Custom Posts
Entry Points in Plugin
Entry Points
Plugins run on the server side.
Server only responds when it is requested.
Requested moment → entry point
Entry Points
Q. When the server is requested?
A. It is when client access via a URL.
Q. Why a URL is used?
A. To define a resource: output to client
A. To receive data: input from client
Entry Points
Q. Output Form?
A. Whatever,
Images, audio, video, html documents, ...
Q. Input form?
A. Generally submitting forms
via GET/POST method.
Entry Points
There are some special entry points left for
plugins
● Menu items
● Shortcodes
● Admin post
● AJAX
● Redirecting
● Activation, deactivation, uninstall
Menu Items
Callback from admin menu clicking
add_menu_page()
add_submenu_page()
remove_menu_page()
remove_submenu_page()
Where is default menu?
wp-admin/menu-header.php
<ul id="adminmenu">
<?php
_wp_menu_output( $menu, $submenu );
function _wp_menu_output( $menu, $submenu, $submenu_as_parent = true )
here menus are printed in html
Where is default menu?
wp-admin/menu.php (admin.php includes it)
wp-amdin/includes/menu.php
builds administrative menus
global $menu, $submenu stores menu
information
Our custom menus
wp-admin/includes/menu.php
do_action( 'admin_menu', '' );
Menu API are defined in wp-
admin/includes/plugin.php
add_menu_page
function add_menu_page( $page_title, $menu_title, $capability, $menu_slug,
$function = '', $icon_url = '', $position = null ) {
...
$new_menu = array( $menu_title, $capability, $menu_slug, $page_title,
'menu-top ' . $icon_class . $hookname, $hookname, $icon_url );
if ( null === $position )
$menu[] = $new_menu;
else
$menu[$position] = $new_menu;
add_submenu_page
function add_submenu_page( $parent_slug, $page_title, $menu_title,
$capability, $menu_slug, $function = '' ) {
...
$submenu[$parent_slug][] = array ( $menu_title, $capability, $menu_slug,
$page_title );
...
}
derivatives
● add_dashboard_page()
● add_posts_page()
● add_media_page()
● add_pages_page()
● add_comments_page()
● add_theme_page()
● add_plugins_page()
● add_users_page()
● add_management_page()
● add_options_page()
Shortcodes
What is shortcode?
A "magic word" in post content that is
replaced by some process defined in plugin
or themes in runtime.
Good for displaying complex, dynamic
contents
Shortcodes
Sample:
[gallery id="123" size="medium"]
[gallery]
or
[caption]My Caption[/caption] *enclosed form
Shortcodes
add_shortcode()
$shortcode_tags = array();
function add_shortcode($tag, $func) {
global $shortcode_tags;
if ( is_callable($func) )
$shortcode_tags[$tag] = $func;
}
Shortcodes
function do_shortcode($content) {
global $shortcode_tags;
if ( false === strpos( $content, '[' ) ) {
return $content;
}
if (empty($shortcode_tags) || !is_array($shortcode_tags))
return $content;
$pattern = get_shortcode_regex();
return preg_replace_callback( "/$pattern/s", 'do_shortcode_tag',
$content );
}
Shortcodes
function do_shortcode_tag( $m ) {
...
if ( isset( $m[5] ) ) {
// enclosing tag - extra parameter
return $m[1] . call_user_func( $shortcode_tags[$tag], $attr, $m[5],
$tag ) . $m[6];
} else {
// self-closing tag
return $m[1] . call_user_func( $shortcode_tags[$tag], $attr, null,
$tag ) . $m[6];
}
}
Shortcodes
callback params
● $attrs: attributes
● $content: enclosed tag's text
● $tag: shortcode tag itself
Admin-post
Data from clients.
Processing requests.
You can just process requests in your own
page because $_REQUEST, $_GET, $_POST is
global.
Admin-post
But in your own handler,
You cannot use WP core functions.
You cannot authenticate.
Do not reinvent the wheel!
So there is admin-post.php
Admin-post
wp-admin/admin-post.php
define & include minimal settings,
and do_action
$action = empty( $_REQUEST['action'] ) ? '' : $_REQUEST['action'];
admin_post_nopriv, admin_post_nopriv_{$action}
admin_post, admin_post_{$action}
finish using die() in callback function!
AJAX
Very similar to admin-post, but 'DOING_AJAX' is defined:
define( 'DOING_AJAX', true );
also use die() in callback function
if ( is_user_logged_in() ) {
do_action( 'wp_ajax_' . $_REQUEST['action'] );
} else {
do_action( 'wp_ajax_nopriv_' . $_REQUEST['action'] );
}
// Default status
die( '0' );
Redirect
You can generate custom page in plugin, by
using 'template_redirect' action.
function my_page_template_redirect() {
if( is_page( 'goodies' ) && ! is_user_logged_in() ) {
wp_redirect( home_url( '/signup/' ) );
exit();
}
}
add_action( 'template_redirect', 'my_page_template_redirect' );
Redirect
You can generate web pages on-the-fly by
utilizing these 3 hooks.
● rewrite rule
● query parsing
● redirect
Detailed instructions, later
(de)activation, uninstall
register_activation_hook($file, $cb)
register_deactivation_hook($file, $cb)
register_uninstall_hook($file, $cb)
$file: full path of plugin file
$cb: callback function
● callbacks should be "SILENT". No echo please.
Summary
● menu items, shortcodes, admin post, ajax,
template redirects, and (de)activation-
uninstall hooks are good initial entry
points.
o It is a good strategy to find these
hooks in plugins first and dissect
their codes from those points.
I know you want to do something!
You understand hook concept.
You know database detail.
Now you know entry points
Definitely, you wanna make something.
Visit http://[ip]/practice/ and download entry-points.php
소스코드: http://[ip]/source-codes/
1.어드민 화면에 메뉴 추가
2.쇼트코드 추가
3.메뉴에서 admin post 전송
4.메뉴에서 ajax 전송
5.redirect 테스트
<author> 부분은 자신의 이름으로 일괄변경하고,
적절히 콜백 함수를 정의해 주세요.
Source code explained
10 minutes break
Managing Your Own Contents
Wow, there are too many
things about posts!
For today, just focuse on
"custom post type"
Arguments are too complex!
Just use Types, or Pods plugin.
Thats' all, problem solved!
Yeah!
... of course, you might not want
this. I was just kidding.
Custom Post
You want to manage your own contents.
That's why custom post is.
● Music collections
● Online store
● Event calendar
● Book data
● Photo portfolio
Custom Post: Motivation
Well, with just one type "post", and you may
define many categories and use them to
organize all contents.
JUST ONE TYPE: POST
MANY CATEGORIES:
portfolio, calendar, music db, ...
Custom Post: Motivation
But you might feel that some post types:
● should be hidden from some users
● even might be excluded from search
● may be only for private use
● may have very complex taxonomies.
so that it should have its own
territory.
● can be accessible from their own URL
rules
Custom Post: Motivation
Why re-invent wheel again?
By extending built-in post type system,
you can REUSE whole facilities related to
posts easily!
UI, and all thing about managing
Built-in Custom Post Types
wp-includes/post.php (included in wp-settings.php)
function create_initial_post_types() {
register_post_type( 'post', array( ...
register_post_type( 'page', array( ...
register_post_type( 'attachment', array( ...
register_post_type( 'revision', array( ...
register_post_type( 'nav_menu_item', array( ...
register_post_status( 'publish', array( ...
...
register_post_type
<?php register_post_type( $post_type, $args ); ?>
$arg is very complex.
But I think it should be explained in detail. Actually,
you cannot avoid it, because eventuall all post type
plugins will use that function, too.
Those plugins also have diffcult UIs, too.
register_post_type
Let's take a look how Types, and Pods create
their custom posts...
They have easy (really?) UI and provide
better functionaliy, but you can see
horribly many options there.
register_post_type $post_type
● Up to 20 characters
● Only lowercase and numbers
register_post_type $args
public:
visible to authors
true implies
exclude_from_search: false,
publicly_queryable, show_in_nav_manues, show_ui
false implies
exclude_from_search: true, publicly_queryable: false,
show_in_nav_manues: false, show_ui: false
register_post_type $args
label:
plural descriptive name
e.g:
"Music Collections"
Mostly localized text
register_post_type $args
labels: more specific text labels
name
sigular_name
menu_name
name_admin_bar
all_items
add_new
add_new_item
edit_item
view_item
search_items
search_items
not_found
not_found in trash
parent_item_colon
register_post_type $args
description:
summary of this post type
register_post_type $args
exclude_from_search:
do not search this post type
try '/S=beatbles'
register_post_type $args
publicly_queryable:
can use query
e.g) /?post_type=music_collection
register_post_type $args
show_ui:
display default UI
register_post_type $args
show_in_nav_menus:
show in navigation menus
be careful! 'publicly_queryable'
must be true
register_post_type $args
show_in_menu:
show admin_menu. show_ui must be true.
Just showing menu.
true, false, else some strings
(tools.php / edit.php)
altough it is false,
you can access URLS like:
/wp-admin/edit.php?post_type=music_collection
(show_ui must be true!)
register_post_type $args
show_in_admin_bar:
available in admin bar
menu_postion:
default: below comments
menu_icon
see dashicons
register_post_type $args
capability_type:
string or array to build capabilites
in our exampe,
edit_music_collections
edit_others_music_collections
publish_music_collections
read_private_music_collections
register_post_type $args
capabilities:
to give specific names to each capability
map_meta_cap:
if true, default meta capability will be added
and then, your role or account need capabilities
register_post_type $args
hierarchical:
post type can be hierarchical.
this is for page-styles.
register_post_type $args
query_var:
to query posts /?{query_var}={slug}
rewrite:
to use pretty permalinks.
has_archive:
Enables post type archive
register_post_type $args
permalink_epmask:
rewrite endpoint bitmask
can_export:
true makes the post can be exported
Too exhaustive... but worth it.
Practice Custom Post
Create custom-plugin-<author>.php
Create a simple custom post.
Display admin menu,
Hide admin_bar,
Write your post:
● Any content is OK.
● Include at least one meta field.
Next Week.
Customizing Visual Components
● List Table Screen
● Widgets
● ...
WordPress System Undercover
● Constants and Globals
● WPDB

More Related Content

What's hot

Building Large jQuery Applications
Building Large jQuery ApplicationsBuilding Large jQuery Applications
Building Large jQuery ApplicationsRebecca Murphey
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ EtsyNishan Subedi
 
Drupal Step-by-Step: How We Built Our Training Site, Part 1
Drupal Step-by-Step: How We Built Our Training Site, Part 1Drupal Step-by-Step: How We Built Our Training Site, Part 1
Drupal Step-by-Step: How We Built Our Training Site, Part 1Acquia
 
Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Yevhen Kotelnytskyi
 
Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Yevhen Kotelnytskyi
 
Magento Dependency Injection
Magento Dependency InjectionMagento Dependency Injection
Magento Dependency InjectionAnton Kril
 
Silex meets SOAP & REST
Silex meets SOAP & RESTSilex meets SOAP & REST
Silex meets SOAP & RESTHugo Hamon
 
Drupal is Stupid (But I Love It Anyway)
Drupal is Stupid (But I Love It Anyway)Drupal is Stupid (But I Love It Anyway)
Drupal is Stupid (But I Love It Anyway)brockboland
 
Routing in Drupal 8
Routing in Drupal 8Routing in Drupal 8
Routing in Drupal 8kgoel1
 
Functionality Focused Code Organization
Functionality Focused Code OrganizationFunctionality Focused Code Organization
Functionality Focused Code OrganizationRebecca Murphey
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zLEDC 2016
 
Using Objects to Organize your jQuery Code
Using Objects to Organize your jQuery CodeUsing Objects to Organize your jQuery Code
Using Objects to Organize your jQuery CodeRebecca Murphey
 
Goodbye hook_menu() - Routing and Menus in Drupal 8
Goodbye hook_menu() - Routing and Menus in Drupal 8Goodbye hook_menu() - Routing and Menus in Drupal 8
Goodbye hook_menu() - Routing and Menus in Drupal 8Exove
 
Sins Against Drupal 2
Sins Against Drupal 2Sins Against Drupal 2
Sins Against Drupal 2Aaron Crosman
 
Using and reusing CakePHP plugins
Using and reusing CakePHP pluginsUsing and reusing CakePHP plugins
Using and reusing CakePHP pluginsPierre MARTIN
 
Beyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance JavascriptBeyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance Javascriptaglemann
 
WordPress Capabilities Magic
WordPress Capabilities MagicWordPress Capabilities Magic
WordPress Capabilities Magicmannieschumpert
 
Intro to advanced caching in WordPress
Intro to advanced caching in WordPressIntro to advanced caching in WordPress
Intro to advanced caching in WordPressMaor Chasen
 

What's hot (20)

Building Large jQuery Applications
Building Large jQuery ApplicationsBuilding Large jQuery Applications
Building Large jQuery Applications
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ Etsy
 
Dojo Confessions
Dojo ConfessionsDojo Confessions
Dojo Confessions
 
Drupal Step-by-Step: How We Built Our Training Site, Part 1
Drupal Step-by-Step: How We Built Our Training Site, Part 1Drupal Step-by-Step: How We Built Our Training Site, Part 1
Drupal Step-by-Step: How We Built Our Training Site, Part 1
 
Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0Как получить чёрный пояс по WordPress? v2.0
Как получить чёрный пояс по WordPress? v2.0
 
Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?Как получить чёрный пояс по WordPress?
Как получить чёрный пояс по WordPress?
 
Magento Dependency Injection
Magento Dependency InjectionMagento Dependency Injection
Magento Dependency Injection
 
Silex meets SOAP & REST
Silex meets SOAP & RESTSilex meets SOAP & REST
Silex meets SOAP & REST
 
Drupal is Stupid (But I Love It Anyway)
Drupal is Stupid (But I Love It Anyway)Drupal is Stupid (But I Love It Anyway)
Drupal is Stupid (But I Love It Anyway)
 
Routing in Drupal 8
Routing in Drupal 8Routing in Drupal 8
Routing in Drupal 8
 
Drupal 8 Routing
Drupal 8 RoutingDrupal 8 Routing
Drupal 8 Routing
 
Functionality Focused Code Organization
Functionality Focused Code OrganizationFunctionality Focused Code Organization
Functionality Focused Code Organization
 
Анатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to zАнатолий Поляков - Drupal.ajax framework from a to z
Анатолий Поляков - Drupal.ajax framework from a to z
 
Using Objects to Organize your jQuery Code
Using Objects to Organize your jQuery CodeUsing Objects to Organize your jQuery Code
Using Objects to Organize your jQuery Code
 
Goodbye hook_menu() - Routing and Menus in Drupal 8
Goodbye hook_menu() - Routing and Menus in Drupal 8Goodbye hook_menu() - Routing and Menus in Drupal 8
Goodbye hook_menu() - Routing and Menus in Drupal 8
 
Sins Against Drupal 2
Sins Against Drupal 2Sins Against Drupal 2
Sins Against Drupal 2
 
Using and reusing CakePHP plugins
Using and reusing CakePHP pluginsUsing and reusing CakePHP plugins
Using and reusing CakePHP plugins
 
Beyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance JavascriptBeyond DOMReady: Ultra High-Performance Javascript
Beyond DOMReady: Ultra High-Performance Javascript
 
WordPress Capabilities Magic
WordPress Capabilities MagicWordPress Capabilities Magic
WordPress Capabilities Magic
 
Intro to advanced caching in WordPress
Intro to advanced caching in WordPressIntro to advanced caching in WordPress
Intro to advanced caching in WordPress
 

Viewers also liked

Dualboot
DualbootDualboot
Dualbootkrtk
 
Огонь вечной памяти города Владимира
Огонь вечной памяти города ВладимираОгонь вечной памяти города Владимира
Огонь вечной памяти города Владимираdetmobib
 
Install dan setting ip oshirix
Install dan setting ip oshirixInstall dan setting ip oshirix
Install dan setting ip oshirixkrtk
 
Competencias comunicativas
Competencias comunicativasCompetencias comunicativas
Competencias comunicativasmariacpar
 
Blues background lesson 2
Blues background lesson 2Blues background lesson 2
Blues background lesson 2crobertstshlc
 
Accessibility at Regents University
Accessibility at Regents UniversityAccessibility at Regents University
Accessibility at Regents UniversitySusan Hastie
 
حيدر حيدر - إغواء - قصص
حيدر حيدر - إغواء - قصصحيدر حيدر - إغواء - قصص
حيدر حيدر - إغواء - قصصAli Alaaraj
 
Técnicas y actividades de aprendizaje
Técnicas y actividades de aprendizajeTécnicas y actividades de aprendizaje
Técnicas y actividades de aprendizajePanamá
 
사설토토 ~(?)GUU69,cOm 까톡: up85 ~(?) 토토프로토 해외토토
사설토토 ~(?)GUU69,cOm 까톡: up85 ~(?) 토토프로토  해외토토사설토토 ~(?)GUU69,cOm 까톡: up85 ~(?) 토토프로토  해외토토
사설토토 ~(?)GUU69,cOm 까톡: up85 ~(?) 토토프로토 해외토토hgjkl
 
Infografía. Pasos para la creación de una empresa en México
Infografía. Pasos para la creación de una empresa en MéxicoInfografía. Pasos para la creación de una empresa en México
Infografía. Pasos para la creación de una empresa en MéxicoXochitl Rodriguez Marquez
 

Viewers also liked (19)

Dualboot
DualbootDualboot
Dualboot
 
Огонь вечной памяти города Владимира
Огонь вечной памяти города ВладимираОгонь вечной памяти города Владимира
Огонь вечной памяти города Владимира
 
Install dan setting ip oshirix
Install dan setting ip oshirixInstall dan setting ip oshirix
Install dan setting ip oshirix
 
Cukoo srch
Cukoo srchCukoo srch
Cukoo srch
 
Competencias comunicativas
Competencias comunicativasCompetencias comunicativas
Competencias comunicativas
 
Tips for Moving
Tips for MovingTips for Moving
Tips for Moving
 
Negosiasi kelas X
Negosiasi kelas XNegosiasi kelas X
Negosiasi kelas X
 
Blues background lesson 2
Blues background lesson 2Blues background lesson 2
Blues background lesson 2
 
Suffix & Prefix
Suffix & PrefixSuffix & Prefix
Suffix & Prefix
 
Accessibility at Regents University
Accessibility at Regents UniversityAccessibility at Regents University
Accessibility at Regents University
 
Aula 47 52 - 1º cga
Aula 47 52 - 1º cgaAula 47 52 - 1º cga
Aula 47 52 - 1º cga
 
Data mining
Data miningData mining
Data mining
 
حيدر حيدر - إغواء - قصص
حيدر حيدر - إغواء - قصصحيدر حيدر - إغواء - قصص
حيدر حيدر - إغواء - قصص
 
Técnicas y actividades de aprendizaje
Técnicas y actividades de aprendizajeTécnicas y actividades de aprendizaje
Técnicas y actividades de aprendizaje
 
Nama murid science fair
Nama murid science fairNama murid science fair
Nama murid science fair
 
사설토토 ~(?)GUU69,cOm 까톡: up85 ~(?) 토토프로토 해외토토
사설토토 ~(?)GUU69,cOm 까톡: up85 ~(?) 토토프로토  해외토토사설토토 ~(?)GUU69,cOm 까톡: up85 ~(?) 토토프로토  해외토토
사설토토 ~(?)GUU69,cOm 까톡: up85 ~(?) 토토프로토 해외토토
 
Zaragoza turismo 305 bis
Zaragoza turismo 305 bisZaragoza turismo 305 bis
Zaragoza turismo 305 bis
 
certificate Inbound
certificate Inboundcertificate Inbound
certificate Inbound
 
Infografía. Pasos para la creación de una empresa en México
Infografía. Pasos para la creación de una empresa en MéxicoInfografía. Pasos para la creación de una empresa en México
Infografía. Pasos para la creación de una empresa en México
 

Similar to Manage Custom Post Types

10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)arcware
 
D7 theming what's new - London
D7 theming what's new - LondonD7 theming what's new - London
D7 theming what's new - LondonMarek Sotak
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkDirk Haun
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practicesmarkparolisi
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)andrewnacin
 
MTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new APIMTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new APISix Apart KK
 
WordPress 15th Meetup - Build a Theme
WordPress 15th Meetup - Build a ThemeWordPress 15th Meetup - Build a Theme
WordPress 15th Meetup - Build a ThemeFadi Nicolas Zahhar
 
Laying the proper foundation for plugin and theme development
Laying the proper foundation for plugin and theme developmentLaying the proper foundation for plugin and theme development
Laying the proper foundation for plugin and theme developmentTammy Hart
 
Writing extensible Word press-plugins
Writing extensible Word press-pluginsWriting extensible Word press-plugins
Writing extensible Word press-pluginsAllenSnook
 
TurboGears2 Pluggable Applications
TurboGears2 Pluggable ApplicationsTurboGears2 Pluggable Applications
TurboGears2 Pluggable ApplicationsAlessandro Molina
 
WordPress for developers - phpday 2011
WordPress for developers -  phpday 2011WordPress for developers -  phpday 2011
WordPress for developers - phpday 2011Maurizio Pelizzone
 
8 things to know about theming in drupal 8
8 things to know about theming in drupal 88 things to know about theming in drupal 8
8 things to know about theming in drupal 8Logan Farr
 
Apostrophe (improved Paris edition)
Apostrophe (improved Paris edition)Apostrophe (improved Paris edition)
Apostrophe (improved Paris edition)tompunk
 
Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com BackboneAplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com BackboneRafael Felix da Silva
 
Gail villanueva add muscle to your wordpress site
Gail villanueva   add muscle to your wordpress siteGail villanueva   add muscle to your wordpress site
Gail villanueva add muscle to your wordpress sitereferences
 
Building Potent WordPress Websites
Building Potent WordPress WebsitesBuilding Potent WordPress Websites
Building Potent WordPress WebsitesKyle Cearley
 
Building a Portfolio With Custom Post Types
Building a Portfolio With Custom Post TypesBuilding a Portfolio With Custom Post Types
Building a Portfolio With Custom Post TypesAlex Blackie
 

Similar to Manage Custom Post Types (20)

Django Vs Rails
Django Vs RailsDjango Vs Rails
Django Vs Rails
 
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
10 Things Every Plugin Developer Should Know (WordCamp Atlanta 2013)
 
D7 theming what's new - London
D7 theming what's new - LondonD7 theming what's new - London
D7 theming what's new - London
 
Using Geeklog as a Web Application Framework
Using Geeklog as a Web Application FrameworkUsing Geeklog as a Web Application Framework
Using Geeklog as a Web Application Framework
 
WordPress Structure and Best Practices
WordPress Structure and Best PracticesWordPress Structure and Best Practices
WordPress Structure and Best Practices
 
Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)Best Practices in Plugin Development (WordCamp Seattle)
Best Practices in Plugin Development (WordCamp Seattle)
 
Django Heresies
Django HeresiesDjango Heresies
Django Heresies
 
MTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new APIMTDDC 2010.2.5 Tokyo - Brand new API
MTDDC 2010.2.5 Tokyo - Brand new API
 
WordPress 15th Meetup - Build a Theme
WordPress 15th Meetup - Build a ThemeWordPress 15th Meetup - Build a Theme
WordPress 15th Meetup - Build a Theme
 
Laying the proper foundation for plugin and theme development
Laying the proper foundation for plugin and theme developmentLaying the proper foundation for plugin and theme development
Laying the proper foundation for plugin and theme development
 
Writing extensible Word press-plugins
Writing extensible Word press-pluginsWriting extensible Word press-plugins
Writing extensible Word press-plugins
 
TurboGears2 Pluggable Applications
TurboGears2 Pluggable ApplicationsTurboGears2 Pluggable Applications
TurboGears2 Pluggable Applications
 
WordPress for developers - phpday 2011
WordPress for developers -  phpday 2011WordPress for developers -  phpday 2011
WordPress for developers - phpday 2011
 
8 things to know about theming in drupal 8
8 things to know about theming in drupal 88 things to know about theming in drupal 8
8 things to know about theming in drupal 8
 
Apostrophe (improved Paris edition)
Apostrophe (improved Paris edition)Apostrophe (improved Paris edition)
Apostrophe (improved Paris edition)
 
Aplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com BackboneAplicacoes dinamicas Rails com Backbone
Aplicacoes dinamicas Rails com Backbone
 
Gail villanueva add muscle to your wordpress site
Gail villanueva   add muscle to your wordpress siteGail villanueva   add muscle to your wordpress site
Gail villanueva add muscle to your wordpress site
 
Building Potent WordPress Websites
Building Potent WordPress WebsitesBuilding Potent WordPress Websites
Building Potent WordPress Websites
 
Building a Portfolio With Custom Post Types
Building a Portfolio With Custom Post TypesBuilding a Portfolio With Custom Post Types
Building a Portfolio With Custom Post Types
 
The Settings API
The Settings APIThe Settings API
The Settings API
 

Recently uploaded

VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkataanamikaraghav4
 
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Lucknow
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Dana Luther
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationLinaWolf1
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一Fs
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝soniya singh
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012rehmti665
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITMgdsc13
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书zdzoqco
 
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130  Available With RoomVIP Kolkata Call Girl Kestopur 👉 8250192130  Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Roomdivyansh0kumar0
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Sonam Pathan
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一Fs
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Roomishabajaj13
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Excelmac1
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)Christopher H Felton
 
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一3sw2qly1
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Roomdivyansh0kumar0
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhimiss dipika
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Sonam Pathan
 

Recently uploaded (20)

VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls KolkataVIP Call Girls Kolkata Ananya 🤌  8250192130 🚀 Vip Call Girls Kolkata
VIP Call Girls Kolkata Ananya 🤌 8250192130 🚀 Vip Call Girls Kolkata
 
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja VipCall Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
Call Girls Service Adil Nagar 7001305949 Need escorts Service Pooja Vip
 
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort ServiceHot Sexy call girls in  Rk Puram 🔝 9953056974 🔝 Delhi escort Service
Hot Sexy call girls in Rk Puram 🔝 9953056974 🔝 Delhi escort Service
 
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
Packaging the Monolith - PHP Tek 2024 (Breaking it down one bite at a time)
 
PHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 DocumentationPHP-based rendering of TYPO3 Documentation
PHP-based rendering of TYPO3 Documentation
 
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
定制(AUT毕业证书)新西兰奥克兰理工大学毕业证成绩单原版一比一
 
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
Call Girls in Uttam Nagar Delhi 💯Call Us 🔝8264348440🔝
 
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
Call Girls South Delhi Delhi reach out to us at ☎ 9711199012
 
Git and Github workshop GDSC MLRITM
Git and Github  workshop GDSC MLRITMGit and Github  workshop GDSC MLRITM
Git and Github workshop GDSC MLRITM
 
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
办理多伦多大学毕业证成绩单|购买加拿大UTSG文凭证书
 
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130  Available With RoomVIP Kolkata Call Girl Kestopur 👉 8250192130  Available With Room
VIP Kolkata Call Girl Kestopur 👉 8250192130 Available With Room
 
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
Call Girls In The Ocean Pearl Retreat Hotel New Delhi 9873777170
 
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
定制(Management毕业证书)新加坡管理大学毕业证成绩单原版一比一
 
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With RoomVIP Kolkata Call Girl Salt Lake 👉 8250192130  Available With Room
VIP Kolkata Call Girl Salt Lake 👉 8250192130 Available With Room
 
Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...Blepharitis inflammation of eyelid symptoms cause everything included along w...
Blepharitis inflammation of eyelid symptoms cause everything included along w...
 
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
A Good Girl's Guide to Murder (A Good Girl's Guide to Murder, #1)
 
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
定制(CC毕业证书)美国美国社区大学毕业证成绩单原版一比一
 
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130  Available With RoomVIP Kolkata Call Girl Alambazar 👉 8250192130  Available With Room
VIP Kolkata Call Girl Alambazar 👉 8250192130 Available With Room
 
Contact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New DelhiContact Rya Baby for Call Girls New Delhi
Contact Rya Baby for Call Girls New Delhi
 
Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170Call Girls Near The Suryaa Hotel New Delhi 9873777170
Call Girls Near The Suryaa Hotel New Delhi 9873777170
 

Manage Custom Post Types