SlideShare ist ein Scribd-Unternehmen logo
1 von 58
Downloaden Sie, um offline zu lesen
The Core of WordPress Core
    Digging Into WordPress’s Core Data Model
@jakemgold

•   President of 10up - a growing WordPress-centric agency with 18 full time employees

•   Clients like Juicy Couture, Time Inc, Condé Nast, Consumer Reports, TechCrunch,
    Universal Sports, Trulia, & More

•   10 of our 13 software engineers (including me!) contributed to WordPress 3.5, and we
    maintain some of the best rated, most downloaded plug-ins.

•   Personal background: 15 years in web development, with a concentration in
    information systems & architecture
Premise

	
  $args	
  =	
  array(                                                                  _type',
                                                          >   	
  'my_custom_post
 	
  	
  	
  'post_type'	
  =
                                                          	
  'age',
  	
  	
  	
  'meta_key'	
  =>                                             alue_num',
   	
  	
  	
  'ord                erby'	
  =>	
  'meta_v
                                                           SC',
    	
  	
  	
  'order'	
  =>	
  'A
                                                                    array(
     	
  	
  	
     'meta_query'	
  =>	
  
      	
  	
  	
  	
  	
  	
  	
  array(                                                                      	
  SELECT	
  *	
  FROM	
                   	
  ...
       	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'key'
                                                             	
  =>	
  'age',
                                                                               ray(3,	
  4),                   	
  	
  	
  	
  ...	
  blah	
  blah	
  blah
        	
  	
  	
  	
  	
  	
  	
  	
   	
  	
  	
  'value'	
  =>	
  ar
                                                                     '	
  =>	
  'IN',
         	
  	
  	
   	
  	
  	
  	
  	
  	
  	
  	
  'compare
          	
  	
  	
  	
  	
  	
  	
  )
           	
  	
  	
  )
            	
  );
                                                                      ery($args);
             	
  $q     uery	
  =	
  new	
  WP_Qu


                  As a content management framework, WordPress mostly
                   conceals abstract database complexity from us. Cool.
Premise

	
  $args	
  =	
  array(                                                                  _type',
                                                          >   	
  'my_custom_post
 	
  	
  	
  'post_type'	
  =
                                                          	
  'age',
  	
  	
  	
  'meta_key'	
  =>                                             alue_num',
   	
  	
  	
  'ord                erby'	
  =>	
  'meta_v
                                                           SC',
    	
  	
  	
  'order'	
  =>	
  'A
                                                                    array(
     	
  	
  	
     'meta_query'	
  =>	
  
      	
  	
  	
  	
  	
  	
  	
  array(                                                                      	
  SELECT	
  *	
  FROM	
                   	
  ...
       	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  'key'
                                                             	
  =>	
  'age',
                                                                               ray(3,	
  4),                   	
  	
  	
  	
  ...	
  blah	
  blah	
  blah
        	
  	
  	
  	
  	
  	
  	
  	
   	
  	
  	
  'value'	
  =>	
  ar
                                                                     '	
  =>	
  'IN',
         	
  	
  	
   	
  	
  	
  	
  	
  	
  	
  	
  'compare
          	
  	
  	
  	
  	
  	
  	
  )
           	
  	
  	
  )
            	
  );
                                                                      ery($args);
             	
  $q     uery	
  =	
  new	
  WP_Qu



                           As a result, few consider how WordPress stores all
                           the things when you peel the software layer back.
                                                Less cool.
Premise

type',




         	
  SELECT	
  *	
  FROM	
                   	
  ...
,         	
  	
  	
  	
  ...	
  blah	
  blah	
  blah




                                                               ??
         As a result, few consider how WordPress stores all
         the things when you peel the software layer back.
                              Less cool.
Premise

type',




             	
  SELECT	
  *	
  FROM	
                   	
  ...
              	
  	
  	
  	
  ...	
  blah	
  blah	
  blah




                                                                   ??
         Studying how “the things” are stored (the data model) and
          its evolution empowers us to understand WordPress, its
                 potential, and its limitations in deeper ways.
Premise

type',




             	
  SELECT	
  *	
  FROM	
                   	
  ...
              	
  	
  	
  	
  ...	
  blah	
  blah	
  blah




                                                                   ??
         Studying how “the things” are stored (the data model) and
          its evolution empowers us to understand WordPress, its
                 potential, and its limitations in deeper ways.
On Platforms & Abstraction
On Platforms & Abstraction

Good platforms make it easy to build stuff it wasn’t explicitly
                      designed for.
On Platforms & Abstraction

 Good platforms make it easy to build stuff it wasn’t explicitly
                       designed for.

Good content platforms make it easy to create content it wasn’t
                    explicitly designed for.
On Abstraction
On Abstraction

     If we wanted to build an application
        to manage project tasks, its data
           model might look like this.
On Abstraction

     If we wanted to build an application
        to manage project tasks, its data
           model might look like this.

     If we were building a platform that
      could be used for project tasks, or
     any other kind of content, it would
             look very different.
WordPress’s data model essentially handles abstraction with:
  One fairly generic content object table: wp_posts
            Field                   Type
            ID                      bigint(20)	
  unsigned
            post_author             bigint(20)	
  unsigned
            post_date               datetime
            post_date_gmt           datetime
            post_content            longtext
            post_title              text
            post_excerpt            text
            post_status             varchar(20)
            comment_status          varchar(20)
            ping_status             varchar(20)
            post_password           varchar(20)
            post_name               varchar(200)
            to_ping                 text
            pinged                  text
            post_modified           datetime
            post_modified_gmt       datetime
            post_content_filtered   longtext
            post_parent             bigint(20)	
  unsigned
            guid                    varchar(255)
            menu_order              int(11)
            post_type               varchar(20)
            post_mime_type          varchar(100)
            comment_count           bigint(20)
WordPress’s data model essentially handles abstraction with:
                   One fairly generic content object table: wp_posts
                             Field                   Type
                             ID                      bigint(20)	
  unsigned
                             post_author             bigint(20)	
  unsigned
                             post_date               datetime
                             post_date_gmt           datetime
                             post_content            longtext
                             post_title              text
                             post_excerpt            text
                             post_status             varchar(20)
     post_content            comment_status          varchar(20)

generic field for content     ping_status
                             post_password
                                                     varchar(20)
                                                     varchar(20)
                             post_name               varchar(200)
                             to_ping                 text
                             pinged                  text
                             post_modified           datetime
                             post_modified_gmt       datetime
                             post_content_filtered   longtext
                             post_parent             bigint(20)	
  unsigned
                             guid                    varchar(255)
                             menu_order              int(11)
                             post_type               varchar(20)
                             post_mime_type          varchar(100)
                             comment_count           bigint(20)
WordPress’s data model essentially handles abstraction with:
                      One fairly generic content object table: wp_posts
                                Field                   Type
                                ID                      bigint(20)	
  unsigned
                                post_author             bigint(20)	
  unsigned
                                post_date               datetime
                                post_date_gmt           datetime
                                post_content            longtext
                                post_title              text
                                post_excerpt            text
        post_status             post_status
                                comment_status
                                                        varchar(20)
                                                        varchar(20)
generic field for identifier of   ping_status             varchar(20)
  state of content object       post_password
                                post_name
                                                        varchar(20)
                                                        varchar(200)
                                to_ping                 text
                                pinged                  text
                                post_modified           datetime
                                post_modified_gmt       datetime
                                post_content_filtered   longtext
                                post_parent             bigint(20)	
  unsigned
                                guid                    varchar(255)
                                menu_order              int(11)
                                post_type               varchar(20)
                                post_mime_type          varchar(100)
                                comment_count           bigint(20)
WordPress’s data model essentially handles abstraction with:
               One fairly generic content object table: wp_posts
                         Field                   Type
                         ID                      bigint(20)	
  unsigned
                         post_author             bigint(20)	
  unsigned
                         post_date               datetime
                         post_date_gmt           datetime
                         post_content            longtext
                         post_title              text
                         post_excerpt            text
                         post_status             varchar(20)
 post_parent             comment_status          varchar(20)

object hierarchy         ping_status
                         post_password
                                                 varchar(20)
                                                 varchar(20)
                         post_name               varchar(200)
                         to_ping                 text
                         pinged                  text
                         post_modified           datetime
                         post_modified_gmt       datetime
                         post_content_filtered   longtext
                         post_parent             bigint(20)	
  unsigned
                         guid                    varchar(255)
                         menu_order              int(11)
                         post_type               varchar(20)
                         post_mime_type          varchar(100)
                         comment_count           bigint(20)
WordPress’s data model essentially handles abstraction with:
                    One fairly generic content object table: wp_posts
                              Field                   Type
                              ID                      bigint(20)	
  unsigned
                              post_author             bigint(20)	
  unsigned
                              post_date               datetime
                              post_date_gmt           datetime
                              post_content            longtext
                              post_title              text
                              post_excerpt            text
                              post_status             varchar(20)
       menu_order             comment_status          varchar(20)

relative order of content     ping_status
                              post_password
                                                      varchar(20)
                                                      varchar(20)
                              post_name               varchar(200)
                              to_ping                 text
                              pinged                  text
                              post_modified           datetime
                              post_modified_gmt       datetime
                              post_content_filtered   longtext
                              post_parent             bigint(20)	
  unsigned
                              guid                    varchar(255)
                              menu_order              int(11)
                              post_type               varchar(20)
                              post_mime_type          varchar(100)
                              comment_count           bigint(20)
WordPress’s data model essentially handles abstraction with:
                      One fairly generic content object table: wp_posts
                                Field                   Type
                                ID                      bigint(20)	
  unsigned
                                post_author             bigint(20)	
  unsigned
                                post_date               datetime
                                post_date_gmt           datetime
                                post_content            longtext
                                post_title              text
                                post_excerpt            text
       post_type (!!!)          post_status
                                comment_status
                                                        varchar(20)
                                                        varchar(20)
generic identifier for type of   ping_status             varchar(20)
       content object           post_password
                                post_name
                                                        varchar(20)
                                                        varchar(200)
                                to_ping                 text
                                pinged                  text
                                post_modified           datetime
                                post_modified_gmt       datetime
                                post_content_filtered   longtext
                                post_parent             bigint(20)	
  unsigned
                                guid                    varchar(255)
                                menu_order              int(11)
                                post_type               varchar(20)
                                post_mime_type          varchar(100)
                                comment_count           bigint(20)
WordPress’s data model essentially handles abstraction with:
                     One fairly generic content object table: wp_posts
                               Field                   Type
                               ID                      bigint(20)	
  unsigned
                               post_author             bigint(20)	
  unsigned
                               post_date               datetime
                               post_date_gmt           datetime
                               post_content            longtext
                               post_title              text
      post_mime_type           post_excerpt
                               post_status
                                                       text
                                                       varchar(20)
standards based identifier of   comment_status          varchar(20)

   the type of information     ping_status
                               post_password
                                                       varchar(20)
                                                       varchar(20)
    contained in content       post_name               varchar(200)
                               to_ping                 text
                               pinged                  text
                               post_modified           datetime
                               post_modified_gmt       datetime
                               post_content_filtered   longtext
                               post_parent             bigint(20)	
  unsigned
                               guid                    varchar(255)
                               menu_order              int(11)
                               post_type               varchar(20)
                               post_mime_type          varchar(100)
                               comment_count           bigint(20)
WordPress’s data model essentially handles abstraction with:
A completely abstract content object properties table: wp_postmeta

               Field           Type
               meta_id         bigint(20)
               post_id         bigint(20)
               meta_key        varchar(255)
               meta_value      text




            Meta data is defined as “data about data.”
                   It doesn’t get more abstract.
WordPress’s data model essentially handles abstraction with:
A completely abstract content object properties table: wp_postmeta

               Field           Type
               meta_id         bigint(20)
               post_id         bigint(20)
               meta_key        varchar(255)      identifier of content object
               meta_value      text
                                                       this is all about




            Meta data is defined as “data about data.”
                   It doesn’t get more abstract.
WordPress’s data model essentially handles abstraction with:
A completely abstract content object properties table: wp_postmeta

               Field           Type
               meta_id         bigint(20)
               post_id         bigint(20)
                                                 arbitrary identifier for the
               meta_key        varchar(255)      content property we want
               meta_value      text                       to define




            Meta data is defined as “data about data.”
                   It doesn’t get more abstract.
WordPress’s data model essentially handles abstraction with:
A completely abstract content object properties table: wp_postmeta

               Field           Type
               meta_id         bigint(20)
               post_id         bigint(20)
                                                  arbitrary value for our
               meta_key        varchar(255)
                                                    arbitrary property
               meta_value      text




            Meta data is defined as “data about data.”
                   It doesn’t get more abstract.
WordPress’s data model essentially handles abstraction with:
  An abstract set of tables for content classification.
WordPress’s data model essentially handles abstraction with:
  An abstract set of tables for content classification.

                Field         Type

                term_id       bigint(20)	
  unsigned

                name          varchar(200)

                slug          varchar(200)

                term_group    bigint(10)



                wp_terms
                Arbitrary classifications for
                content objects.
WordPress’s data model essentially handles abstraction with:
                       An abstract set of tables for content classification.

Field              Type                     Field         Type

term_taxonomy_id   bigint(20)	
  unsigned   term_id       bigint(20)	
  unsigned

term_id            bigint(20)	
  unsigned   name          varchar(200)

taxonomy           varchar(32)              slug          varchar(200)

description        longtext                 term_group    bigint(10)

parent             bigint(20)	
  unsigned

count              bigint(20)
                                            wp_terms
                                            Arbitrary classifications for
wp_term_taxonomy                            content objects.
Describes the arbitrary
classification (term) for each
unique classification group
(taxonomy).
WordPress’s data model essentially handles abstraction with:
                       An abstract set of tables for content classification.

Field              Type                     Field         Type                     Field             Type

term_taxonomy_id   bigint(20)	
  unsigned   term_id       bigint(20)	
  unsigned   object_id         bigint(20)	
  unsigned

term_id            bigint(20)	
  unsigned   name          varchar(200)             term_taxonomy_id bigint(20)	
  unsigned

taxonomy           varchar(32)              slug          varchar(200)             term_order        int(11)

description        longtext                 term_group    bigint(10)

parent             bigint(20)	
  unsigned
                                                                                   wp_term_relationships
                                            wp_terms                               Associates classifications with
count              bigint(20)
                                            Arbitrary classifications for           content objects.
wp_term_taxonomy                            content objects.
Describes the arbitrary
classification (term) for each
unique classification group
(taxonomy).
WordPress’s data model essentially handles abstraction with:
                       An abstract set of tables for content classification.

Field              Type                     Field         Type

term_taxonomy_id   bigint(20)	
  unsigned   term_id       bigint(20)	
  unsigned

term_id

taxonomy
                   bigint(20)	
  unsigned

                   varchar(32)
                                            name

                                            slug
                                                          varchar(200)

                                                          varchar(200)
                                                                                   Huh?
description        longtext                 term_group    bigint(10)
                                                                                   ... oops.
parent             bigint(20)	
  unsigned

count              bigint(20)
                                            wp_terms
                                            Arbitrary classifications for
wp_term_taxonomy                            content objects.
Describes the arbitrary
classification (term) for each
unique classification group
(taxonomy).
WordPress’s data model essentially handles abstraction with:
        An abstract set of tables for content classification.

                                                   Field             Type


Anything else here surprise you?                   object_id         bigint(20)	
  unsigned

                                                   term_taxonomy_id bigint(20)	
  unsigned

                                                   term_order        int(11)



                                                   wp_term_relationships
                                                   Associates classifications with
                                                   content objects.
WordPress’s data model essentially handles abstraction with:
        An abstract set of tables for content classification.

                                                   Field             Type


Anything else here surprise you?                   object_id         bigint(20)	
  unsigned

                                                   term_taxonomy_id bigint(20)	
  unsigned

          term_order (??)                          term_order        int(11)
     WordPress’s API does not
    support ordering terms. Its                    wp_term_relationships
     data model actually does.                     Associates classifications with
                                                   content objects.
WordPress’s data model essentially handles abstraction with:
        An abstract set of tables for content classification.

                                                   Field             Type


Anything else here surprise you?                   object_id         bigint(20)	
  unsigned

                                                   term_taxonomy_id bigint(20)	
  unsigned

          term_order (??)                          term_order        int(11)
     WordPress’s API does not
    support ordering terms. Its                    wp_term_relationships
     data model actually does.                     Associates classifications with
                                                   content objects.
        Where’s term meta?
    The data model doesn’t yet
   (really) support arbitrary data
    about a classification / term.
WordPress’s data model essentially handles abstraction with:
 A completely abstract global data table: wp_options

          Field            Type
          option_id        bigint(20)	
  unsigned
          option_name      varchar(64)
          option_value     longtext
          autoload         varchar(20)
WordPress’s data model essentially handles abstraction with:
 A completely abstract global data table: wp_options

          Field            Type
          option_id        bigint(20)	
  unsigned
          option_name      varchar(64)
                                                    arbitrary name of data
          option_value     longtext
          autoload         varchar(20)
WordPress’s data model essentially handles abstraction with:
 A completely abstract global data table: wp_options

          Field            Type
          option_id        bigint(20)	
  unsigned
          option_name      varchar(64)
                                                    arbitrary value
          option_value     longtext                  for said data
          autoload         varchar(20)
Other tables and abstraction!

      wp_comments & wp_commentmeta
Comments are a specific type of content object, separated
          for legacy and scalability reasons.

             wp_users & wp_usermeta
       Users a special object (not really content).
       Also have arbitrary properties / meta data.


                       wp_links
         A specific content object (and leftover.)
How did we get here?
Why do we call content objects “posts”?
And why the heck is there a “links” table?
WordPress 1.5: Blogging Software
WordPress 1.5: Blogging Software
     Tables:
 wp_categories
 wp_comments
wp_linkcategories
   wp_links
  wp_options
  wp_post2cat
 wp_postmeta
   wp_posts
   wp_users
WordPress 1.5*: Blogging Software
                    Field                   Type

     Tables:        ID
                    post_author
                                            bigint(20)	
  unsigned
                                            int(4)

 wp_categories      post_date
                    post_date_gmt
                                            datetime
                                            datetime

 wp_comments        post_content
                    post_title
                                            longtext
                                            text
wp_linkcategories   post_category
                    post_excerpt
                                            int(4)
                                            text
   wp_links         post_status             enum('publish','draft','private','static','object')

  wp_options
                    comment_status          enum('open','closed','registered_only')
                    ping_status             enum('open','closed')

  wp_post2cat       post_password
                    post_name
                                            varchar(20)
                                            varchar(200)

 wp_postmeta        to_ping
                    pinged
                                            text
                                            text
   wp_posts         post_modified
                    post_modified_gmt
                                            datetime
                                            datetime
   wp_users         post_content_filtered
                    post_parent
                                            text
                                            int(11)
                    guid                    varchar(255)
                    menu_order              int(11)
WordPress 1.5: Blogging Software
     Tables:        Field        Type

 wp_categories      meta_id      bigint(20)


 wp_comments
                    post_id      bigint(20)

                    meta_key     varchar(255)
wp_linkcategories   meta_value   text

   wp_links
  wp_options
  wp_post2cat
 wp_postmeta
   wp_posts
   wp_users
WordPress 1.5: Blogging Software
     Tables:        Field            Type

 wp_categories      meta_id          bigint(20)


 wp_comments
                    post_id          bigint(20)

                    meta_key         varchar(255)
wp_linkcategories   meta_value       text

   wp_links
  wp_options                Arbitrary content (post) meta data!
  wp_post2cat                     Early sign of data model
 wp_postmeta                   abstraction... and possibility!
   wp_posts
   wp_users
WordPress 2.0: Foundation for Content Abstraction
                      Field                   Type

       Tables:
                      ID                      bigint(20)	
  unsigned
                      post_author             bigint(20)
                      post_date               datetime
   wp_categories      post_date_gmt
                      post_content
                                              datetime
                                              longtext
   wp_comments        post_title
                      post_category
                                              text
                                              int(4)
  wp_linkcategories   post_excerpt
                      post_status
                                              text
                                              enum('publish','draft','private','static','object',	
  'attachment')

     wp_links         comment_status
                      ping_status
                                              enum('open','closed','registered_only')
                                              enum('open','closed')
    wp_options        post_password
                      post_name
                                              varchar(20)
                                              varchar(200)
    wp_post2cat       to_ping
                      pinged
                                              text
                                              text
   wp_postmeta        post_modified
                      post_modified_gmt
                                              datetime
                                              datetime

     wp_posts         post_content_filtered
                      post_parent
                                              text
                                              bigint(20)

    wp_usermeta       guid
                      menu_order
                                              varchar(255)
                                              int(11)

     wp_users         post_type
                      post_mime_type
                                              varchar(100)
                                              varchar(100)
                      comment_count           bigint(20)
WordPress 2.0: Foundation for Content Abstraction
                      Field                   Type

       Tables:
                      ID                      bigint(20)	
  unsigned
                      post_author             bigint(20)
                      post_date               datetime
   wp_categories      post_date_gmt
                      post_content
                                              datetime
                                              longtext
   wp_comments        post_title
                      post_category
                                              text
                                              int(4)
  wp_linkcategories   post_excerpt
                      post_status
                                              text
                                              enum('publish','draft','private','static','object',	
  'attachment')

     wp_links         comment_status
                      ping_status
                                              enum('open','closed','registered_only')
                                              enum('open','closed')
    wp_options        post_password
                      post_name
                                              varchar(20)
                                              varchar(200)
    wp_post2cat       to_ping
                      pinged
                                              text
                                              text                     Origin: Pages & Media.
   wp_postmeta        post_modified
                      post_modified_gmt
                                              datetime
                                              datetime
                                                                       Post type API wouldn’t
                                                                            come till 3.0!
     wp_posts         post_content_filtered
                      post_parent
                                              text
                                              bigint(20)

    wp_usermeta       guid
                      menu_order
                                              varchar(255)
                                              int(11)

     wp_users         post_type
                      post_mime_type
                                              varchar(100)
                                              varchar(100)
                      comment_count           bigint(20)
WordPress 2.0: Foundation for Content Types
     Tables:
 wp_categories
 wp_comments
wp_linkcategories
   wp_links
  wp_options
  wp_post2cat
 wp_postmeta
   wp_posts
  wp_usermeta
   wp_users
WordPress 2.0: Foundation for Content Types
     Tables:        Field              Type

 wp_categories      umeta_id           bigint(20)


 wp_comments
                    user_id            bigint(20)

                    meta_key           varchar(255)
wp_linkcategories   meta_value         longtext

   wp_links
  wp_options                   User objects are now extensible
  wp_post2cat                     with arbitrary meta data.
 wp_postmeta                     More signs of extensibility!
   wp_posts
  wp_usermeta
   wp_users
WordPress 2.3: Classifications Get Abstract
WordPress 2.3: Classifications Get Abstract

           Tables:           Removed Tables:
      wp_comments            wp_categories
         wp_links           wp_linkcategories
        wp_options            wp_post2cat
       wp_postmeta
         wp_posts
         wp_terms
    wp_term_relationships
     wp_term_taxonomy
       wp_usermeta
         wp_users
WordPress 2.3: Classifications Get Abstract

           Tables:           Removed Tables:
      wp_comments            wp_categories
         wp_links           wp_linkcategories
        wp_options            wp_post2cat
       wp_postmeta
         wp_posts
                                  Impetus: Tags.
         wp_terms            Taxonomy registration API
    wp_term_relationships      wouldn’t come till 2.9!

     wp_term_taxonomy         Category fields in post and
       wp_usermeta          links tables don’t get removed
                                        until 2.8.
         wp_users
WordPress 2.5: Enum Values Fade Away

      post_status,	
  comment_status,	
  ping_status
in wp_posts table change from enumerated list (enforced options
                in data model) to freeform field

                         term_order	
  
      curiously gets added to wp_term_relationships table
WordPress 2.9: Comment Objects Get Meta
WordPress 2.9: Comment Objects Get Meta
                   Tables:
               wp_comments
              wp_commentmeta
                  wp_links
                wp_options
               wp_postmeta
                 wp_posts
                 wp_terms
            wp_term_relationships
             wp_term_taxonomy
               wp_usermeta
                 wp_users
WordPress 3.0: Groups of Objects



    WordPress Network Mode (Multisite)

(which we’re not going to study for time’s sake)




                                  more detail: http://codex.wordpress.org/Database_Description/2.0
The Future of WordPress’s Data Model
The Future of WordPress’s Data Model
The Future of WordPress’s Data Model


• Clean up of taxonomy tables, and addition of term meta data?
• Legacy specific content object tables (links) fall away? (note 3.5)
• Post table fields very specific to blog posts get moved over to post
  meta or taxonomies?

• Improvements to relationships between content objects?
The Core of WordPress Core
    Thanks! Slides will be available at 10up.com.
   Feedback? Want more? @jakemgold on Twitter

Weitere ähnliche Inhalte

Was ist angesagt?

Dig Deeper into WordPress - WD Meetup Cairo
Dig Deeper into WordPress - WD Meetup CairoDig Deeper into WordPress - WD Meetup Cairo
Dig Deeper into WordPress - WD Meetup CairoMohamed Mosaad
 
Moose (Perl 5)
Moose (Perl 5)Moose (Perl 5)
Moose (Perl 5)xSawyer
 
Object oriented javascript
Object oriented javascriptObject oriented javascript
Object oriented javascriptShah Jalal
 
Mysqlnd Async Ipc2008
Mysqlnd Async Ipc2008Mysqlnd Async Ipc2008
Mysqlnd Async Ipc2008Ulf Wendel
 
Customizing the list control - Sencha Touch mobile web application
Customizing the list control - Sencha Touch mobile web applicationCustomizing the list control - Sencha Touch mobile web application
Customizing the list control - Sencha Touch mobile web applicationJoseph Khan
 
Advanced php
Advanced phpAdvanced php
Advanced phphamfu
 
Surviving the Zombie Apocalypse using Custom Post Types and Taxonomies
Surviving the Zombie Apocalypse using Custom Post Types and TaxonomiesSurviving the Zombie Apocalypse using Custom Post Types and Taxonomies
Surviving the Zombie Apocalypse using Custom Post Types and TaxonomiesBrad Williams
 
Rails' Next Top Model
Rails' Next Top ModelRails' Next Top Model
Rails' Next Top ModelAdam Keys
 
Introduction To Moose
Introduction To MooseIntroduction To Moose
Introduction To MooseMike Whitaker
 
Rapid web development, the right way.
Rapid web development, the right way.Rapid web development, the right way.
Rapid web development, the right way.nubela
 
Zend Framework 1 + Doctrine 2
Zend Framework 1 + Doctrine 2Zend Framework 1 + Doctrine 2
Zend Framework 1 + Doctrine 2Ralph Schindler
 
Advanced Php - Macq Electronique 2010
Advanced Php - Macq Electronique 2010Advanced Php - Macq Electronique 2010
Advanced Php - Macq Electronique 2010Michelangelo van Dam
 
MongoD Essentials
MongoD EssentialsMongoD Essentials
MongoD Essentialszahid-mian
 
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and MingRapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and MingRick Copeland
 
MongoDB-Beginner tutorial explaining basic operation via mongo shell
MongoDB-Beginner tutorial explaining basic operation via mongo shellMongoDB-Beginner tutorial explaining basic operation via mongo shell
MongoDB-Beginner tutorial explaining basic operation via mongo shellPriti Solanki
 
The Query the Whole Query and Nothing but the Query
The Query the Whole Query and Nothing but the QueryThe Query the Whole Query and Nothing but the Query
The Query the Whole Query and Nothing but the QueryChris Olbekson
 
OO Perl with Moose
OO Perl with MooseOO Perl with Moose
OO Perl with MooseNelo Onyiah
 
Synapseindia object oriented programming in php
Synapseindia object oriented programming in phpSynapseindia object oriented programming in php
Synapseindia object oriented programming in phpSynapseindiappsdevelopment
 

Was ist angesagt? (20)

Dig Deeper into WordPress - WD Meetup Cairo
Dig Deeper into WordPress - WD Meetup CairoDig Deeper into WordPress - WD Meetup Cairo
Dig Deeper into WordPress - WD Meetup Cairo
 
Moose (Perl 5)
Moose (Perl 5)Moose (Perl 5)
Moose (Perl 5)
 
Object oriented javascript
Object oriented javascriptObject oriented javascript
Object oriented javascript
 
Mysqlnd Async Ipc2008
Mysqlnd Async Ipc2008Mysqlnd Async Ipc2008
Mysqlnd Async Ipc2008
 
Customizing the list control - Sencha Touch mobile web application
Customizing the list control - Sencha Touch mobile web applicationCustomizing the list control - Sencha Touch mobile web application
Customizing the list control - Sencha Touch mobile web application
 
Advanced php
Advanced phpAdvanced php
Advanced php
 
Underscore
UnderscoreUnderscore
Underscore
 
Surviving the Zombie Apocalypse using Custom Post Types and Taxonomies
Surviving the Zombie Apocalypse using Custom Post Types and TaxonomiesSurviving the Zombie Apocalypse using Custom Post Types and Taxonomies
Surviving the Zombie Apocalypse using Custom Post Types and Taxonomies
 
Rails' Next Top Model
Rails' Next Top ModelRails' Next Top Model
Rails' Next Top Model
 
JPA2 - a brief intro
JPA2 - a brief introJPA2 - a brief intro
JPA2 - a brief intro
 
Introduction To Moose
Introduction To MooseIntroduction To Moose
Introduction To Moose
 
Rapid web development, the right way.
Rapid web development, the right way.Rapid web development, the right way.
Rapid web development, the right way.
 
Zend Framework 1 + Doctrine 2
Zend Framework 1 + Doctrine 2Zend Framework 1 + Doctrine 2
Zend Framework 1 + Doctrine 2
 
Advanced Php - Macq Electronique 2010
Advanced Php - Macq Electronique 2010Advanced Php - Macq Electronique 2010
Advanced Php - Macq Electronique 2010
 
MongoD Essentials
MongoD EssentialsMongoD Essentials
MongoD Essentials
 
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and MingRapid and Scalable Development with MongoDB, PyMongo, and Ming
Rapid and Scalable Development with MongoDB, PyMongo, and Ming
 
MongoDB-Beginner tutorial explaining basic operation via mongo shell
MongoDB-Beginner tutorial explaining basic operation via mongo shellMongoDB-Beginner tutorial explaining basic operation via mongo shell
MongoDB-Beginner tutorial explaining basic operation via mongo shell
 
The Query the Whole Query and Nothing but the Query
The Query the Whole Query and Nothing but the QueryThe Query the Whole Query and Nothing but the Query
The Query the Whole Query and Nothing but the Query
 
OO Perl with Moose
OO Perl with MooseOO Perl with Moose
OO Perl with Moose
 
Synapseindia object oriented programming in php
Synapseindia object oriented programming in phpSynapseindia object oriented programming in php
Synapseindia object oriented programming in php
 

Andere mochten auch

Troubleshooting WordPress - Tips & Advice
Troubleshooting WordPress - Tips & AdviceTroubleshooting WordPress - Tips & Advice
Troubleshooting WordPress - Tips & AdviceJoe Manna
 
Arquitetura da Informação e Wordpress
Arquitetura da Informação e WordpressArquitetura da Informação e Wordpress
Arquitetura da Informação e WordpressUTFPR
 
CMS Capabilities of WordPress
CMS Capabilities of WordPressCMS Capabilities of WordPress
CMS Capabilities of WordPressEric Marden
 
Architecture Behind Wordpress
Architecture Behind WordpressArchitecture Behind Wordpress
Architecture Behind Wordpressindrio
 
Content Architecture WordPress Hamilton
Content Architecture WordPress HamiltonContent Architecture WordPress Hamilton
Content Architecture WordPress HamiltonShanta Nathwani
 
WordPress Websites that work
WordPress   Websites that workWordPress   Websites that work
WordPress Websites that workDustin Luther
 
Advantages & Disadvantages of Wordpress
Advantages & Disadvantages of WordpressAdvantages & Disadvantages of Wordpress
Advantages & Disadvantages of WordpressXithi Technologies
 
Content Architecture in WordPress
Content Architecture in WordPressContent Architecture in WordPress
Content Architecture in WordPressJamie Schmid
 
Wordpress site scaling architecture on cloud infrastructure with AWS
Wordpress site scaling architecture on cloud infrastructure with AWSWordpress site scaling architecture on cloud infrastructure with AWS
Wordpress site scaling architecture on cloud infrastructure with AWSLe Kien Truc
 
Anatomy and Architecture of a WordPress Theme
Anatomy and Architecture of a WordPress ThemeAnatomy and Architecture of a WordPress Theme
Anatomy and Architecture of a WordPress ThemeJulie Kuehl
 
WordPress Code Architecture
WordPress Code ArchitectureWordPress Code Architecture
WordPress Code ArchitectureMario Peshev
 
Project report-on-student-information-management-system-php-mysql
Project report-on-student-information-management-system-php-mysqlProject report-on-student-information-management-system-php-mysql
Project report-on-student-information-management-system-php-mysqlRaj Sharma
 

Andere mochten auch (13)

Troubleshooting WordPress - Tips & Advice
Troubleshooting WordPress - Tips & AdviceTroubleshooting WordPress - Tips & Advice
Troubleshooting WordPress - Tips & Advice
 
Arquitetura da Informação e Wordpress
Arquitetura da Informação e WordpressArquitetura da Informação e Wordpress
Arquitetura da Informação e Wordpress
 
CMS Capabilities of WordPress
CMS Capabilities of WordPressCMS Capabilities of WordPress
CMS Capabilities of WordPress
 
Architecture Behind Wordpress
Architecture Behind WordpressArchitecture Behind Wordpress
Architecture Behind Wordpress
 
Content Architecture WordPress Hamilton
Content Architecture WordPress HamiltonContent Architecture WordPress Hamilton
Content Architecture WordPress Hamilton
 
WordPress Websites that work
WordPress   Websites that workWordPress   Websites that work
WordPress Websites that work
 
Advantages & Disadvantages of Wordpress
Advantages & Disadvantages of WordpressAdvantages & Disadvantages of Wordpress
Advantages & Disadvantages of Wordpress
 
Content Architecture in WordPress
Content Architecture in WordPressContent Architecture in WordPress
Content Architecture in WordPress
 
Wordpress site scaling architecture on cloud infrastructure with AWS
Wordpress site scaling architecture on cloud infrastructure with AWSWordpress site scaling architecture on cloud infrastructure with AWS
Wordpress site scaling architecture on cloud infrastructure with AWS
 
Anatomy and Architecture of a WordPress Theme
Anatomy and Architecture of a WordPress ThemeAnatomy and Architecture of a WordPress Theme
Anatomy and Architecture of a WordPress Theme
 
Architecture for WordPress on AWS
Architecture for WordPress on AWSArchitecture for WordPress on AWS
Architecture for WordPress on AWS
 
WordPress Code Architecture
WordPress Code ArchitectureWordPress Code Architecture
WordPress Code Architecture
 
Project report-on-student-information-management-system-php-mysql
Project report-on-student-information-management-system-php-mysqlProject report-on-student-information-management-system-php-mysql
Project report-on-student-information-management-system-php-mysql
 

Ähnlich wie Core (Data Model) of WordPress Core

Extending Moose
Extending MooseExtending Moose
Extending Moosesartak
 
From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)Night Sailer
 
Lithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate FrameworksLithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate FrameworksNate Abele
 
MiamiJS - The Future of JavaScript
MiamiJS - The Future of JavaScriptMiamiJS - The Future of JavaScript
MiamiJS - The Future of JavaScriptCaridy Patino
 
【前端Mvc】之豆瓣说实践
【前端Mvc】之豆瓣说实践【前端Mvc】之豆瓣说实践
【前端Mvc】之豆瓣说实践taobao.com
 
The State of Lithium
The State of LithiumThe State of Lithium
The State of LithiumNate Abele
 
DrupalCamp Foz - Novas APIs Drupal 7
DrupalCamp Foz - Novas APIs Drupal 7DrupalCamp Foz - Novas APIs Drupal 7
DrupalCamp Foz - Novas APIs Drupal 7chuvainc
 
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móvilesDesarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móvilesLuis Curo Salvatierra
 
PHP Development With MongoDB
PHP Development With MongoDBPHP Development With MongoDB
PHP Development With MongoDBFitz Agard
 
PHP Development with MongoDB (Fitz Agard)
PHP Development with MongoDB (Fitz Agard)PHP Development with MongoDB (Fitz Agard)
PHP Development with MongoDB (Fitz Agard)MongoSF
 
The rise of json in rdbms land jab17
The rise of json in rdbms land jab17The rise of json in rdbms land jab17
The rise of json in rdbms land jab17alikonweb
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说Ting Lv
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ EtsyNishan Subedi
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVCAlive Kuo
 
eSCIMo - User Provisioning over Web
eSCIMo - User Provisioning over WebeSCIMo - User Provisioning over Web
eSCIMo - User Provisioning over WebLDAPCon
 

Ähnlich wie Core (Data Model) of WordPress Core (20)

MongoDB and RDBMS
MongoDB and RDBMSMongoDB and RDBMS
MongoDB and RDBMS
 
Extending Moose
Extending MooseExtending Moose
Extending Moose
 
DataMapper
DataMapperDataMapper
DataMapper
 
Spl Not A Bridge Too Far phpNW09
Spl Not A Bridge Too Far phpNW09Spl Not A Bridge Too Far phpNW09
Spl Not A Bridge Too Far phpNW09
 
From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)From mysql to MongoDB(MongoDB2011北京交流会)
From mysql to MongoDB(MongoDB2011北京交流会)
 
Lithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate FrameworksLithium: The Framework for People Who Hate Frameworks
Lithium: The Framework for People Who Hate Frameworks
 
MiamiJS - The Future of JavaScript
MiamiJS - The Future of JavaScriptMiamiJS - The Future of JavaScript
MiamiJS - The Future of JavaScript
 
【前端Mvc】之豆瓣说实践
【前端Mvc】之豆瓣说实践【前端Mvc】之豆瓣说实践
【前端Mvc】之豆瓣说实践
 
The State of Lithium
The State of LithiumThe State of Lithium
The State of Lithium
 
DrupalCamp Foz - Novas APIs Drupal 7
DrupalCamp Foz - Novas APIs Drupal 7DrupalCamp Foz - Novas APIs Drupal 7
DrupalCamp Foz - Novas APIs Drupal 7
 
Azure ARM Templates 101
Azure ARM Templates 101Azure ARM Templates 101
Azure ARM Templates 101
 
Desarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móvilesDesarrollo de módulos en Drupal e integración con dispositivos móviles
Desarrollo de módulos en Drupal e integración con dispositivos móviles
 
PHP Development With MongoDB
PHP Development With MongoDBPHP Development With MongoDB
PHP Development With MongoDB
 
PHP Development with MongoDB (Fitz Agard)
PHP Development with MongoDB (Fitz Agard)PHP Development with MongoDB (Fitz Agard)
PHP Development with MongoDB (Fitz Agard)
 
The rise of json in rdbms land jab17
The rise of json in rdbms land jab17The rise of json in rdbms land jab17
The rise of json in rdbms land jab17
 
前端MVC 豆瓣说
前端MVC 豆瓣说前端MVC 豆瓣说
前端MVC 豆瓣说
 
Virtual Madness @ Etsy
Virtual Madness @ EtsyVirtual Madness @ Etsy
Virtual Madness @ Etsy
 
[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC[Coscup 2012] JavascriptMVC
[Coscup 2012] JavascriptMVC
 
Laravel doctrine
Laravel doctrineLaravel doctrine
Laravel doctrine
 
eSCIMo - User Provisioning over Web
eSCIMo - User Provisioning over WebeSCIMo - User Provisioning over Web
eSCIMo - User Provisioning over Web
 

Kürzlich hochgeladen

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brandgvaughan
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DaySri Ambati
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clashcharlottematthew16
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Manik S Magar
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxhariprasad279825
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubKalema Edgar
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxLoriGlavin3
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 

Kürzlich hochgeladen (20)

Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
WordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your BrandWordPress Websites for Engineers: Elevate Your Brand
WordPress Websites for Engineers: Elevate Your Brand
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
DMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special EditionDMCC Future of Trade Web3 - Special Edition
DMCC Future of Trade Web3 - Special Edition
 
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo DayH2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
H2O.ai CEO/Founder: Sri Ambati Keynote at Wells Fargo Day
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Powerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time ClashPowerpoint exploring the locations used in television show Time Clash
Powerpoint exploring the locations used in television show Time Clash
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!Anypoint Exchange: It’s Not Just a Repo!
Anypoint Exchange: It’s Not Just a Repo!
 
Artificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptxArtificial intelligence in cctv survelliance.pptx
Artificial intelligence in cctv survelliance.pptx
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Unleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding ClubUnleash Your Potential - Namagunga Girls Coding Club
Unleash Your Potential - Namagunga Girls Coding Club
 
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptxMerck Moving Beyond Passwords: FIDO Paris Seminar.pptx
Merck Moving Beyond Passwords: FIDO Paris Seminar.pptx
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 

Core (Data Model) of WordPress Core

  • 1. The Core of WordPress Core Digging Into WordPress’s Core Data Model
  • 2. @jakemgold • President of 10up - a growing WordPress-centric agency with 18 full time employees • Clients like Juicy Couture, Time Inc, Condé Nast, Consumer Reports, TechCrunch, Universal Sports, Trulia, & More • 10 of our 13 software engineers (including me!) contributed to WordPress 3.5, and we maintain some of the best rated, most downloaded plug-ins. • Personal background: 15 years in web development, with a concentration in information systems & architecture
  • 3. Premise  $args  =  array( _type', >  'my_custom_post      'post_type'  =  'age',      'meta_key'  => alue_num',      'ord erby'  =>  'meta_v SC',      'order'  =>  'A array(       'meta_query'  =>                array(  SELECT  *  FROM    ...                      'key'  =>  'age', ray(3,  4),        ...  blah  blah  blah                      'value'  =>  ar '  =>  'IN',                      'compare              )      )  ); ery($args);  $q uery  =  new  WP_Qu As a content management framework, WordPress mostly conceals abstract database complexity from us. Cool.
  • 4. Premise  $args  =  array( _type', >  'my_custom_post      'post_type'  =  'age',      'meta_key'  => alue_num',      'ord erby'  =>  'meta_v SC',      'order'  =>  'A array(       'meta_query'  =>                array(  SELECT  *  FROM    ...                      'key'  =>  'age', ray(3,  4),        ...  blah  blah  blah                      'value'  =>  ar '  =>  'IN',                      'compare              )      )  ); ery($args);  $q uery  =  new  WP_Qu As a result, few consider how WordPress stores all the things when you peel the software layer back. Less cool.
  • 5. Premise type',  SELECT  *  FROM    ... ,        ...  blah  blah  blah ?? As a result, few consider how WordPress stores all the things when you peel the software layer back. Less cool.
  • 6. Premise type',  SELECT  *  FROM    ...        ...  blah  blah  blah ?? Studying how “the things” are stored (the data model) and its evolution empowers us to understand WordPress, its potential, and its limitations in deeper ways.
  • 7. Premise type',  SELECT  *  FROM    ...        ...  blah  blah  blah ?? Studying how “the things” are stored (the data model) and its evolution empowers us to understand WordPress, its potential, and its limitations in deeper ways.
  • 8. On Platforms & Abstraction
  • 9. On Platforms & Abstraction Good platforms make it easy to build stuff it wasn’t explicitly designed for.
  • 10. On Platforms & Abstraction Good platforms make it easy to build stuff it wasn’t explicitly designed for. Good content platforms make it easy to create content it wasn’t explicitly designed for.
  • 12. On Abstraction If we wanted to build an application to manage project tasks, its data model might look like this.
  • 13. On Abstraction If we wanted to build an application to manage project tasks, its data model might look like this. If we were building a platform that could be used for project tasks, or any other kind of content, it would look very different.
  • 14. WordPress’s data model essentially handles abstraction with: One fairly generic content object table: wp_posts Field Type ID bigint(20)  unsigned post_author bigint(20)  unsigned post_date datetime post_date_gmt datetime post_content longtext post_title text post_excerpt text post_status varchar(20) comment_status varchar(20) ping_status varchar(20) post_password varchar(20) post_name varchar(200) to_ping text pinged text post_modified datetime post_modified_gmt datetime post_content_filtered longtext post_parent bigint(20)  unsigned guid varchar(255) menu_order int(11) post_type varchar(20) post_mime_type varchar(100) comment_count bigint(20)
  • 15. WordPress’s data model essentially handles abstraction with: One fairly generic content object table: wp_posts Field Type ID bigint(20)  unsigned post_author bigint(20)  unsigned post_date datetime post_date_gmt datetime post_content longtext post_title text post_excerpt text post_status varchar(20) post_content comment_status varchar(20) generic field for content ping_status post_password varchar(20) varchar(20) post_name varchar(200) to_ping text pinged text post_modified datetime post_modified_gmt datetime post_content_filtered longtext post_parent bigint(20)  unsigned guid varchar(255) menu_order int(11) post_type varchar(20) post_mime_type varchar(100) comment_count bigint(20)
  • 16. WordPress’s data model essentially handles abstraction with: One fairly generic content object table: wp_posts Field Type ID bigint(20)  unsigned post_author bigint(20)  unsigned post_date datetime post_date_gmt datetime post_content longtext post_title text post_excerpt text post_status post_status comment_status varchar(20) varchar(20) generic field for identifier of ping_status varchar(20) state of content object post_password post_name varchar(20) varchar(200) to_ping text pinged text post_modified datetime post_modified_gmt datetime post_content_filtered longtext post_parent bigint(20)  unsigned guid varchar(255) menu_order int(11) post_type varchar(20) post_mime_type varchar(100) comment_count bigint(20)
  • 17. WordPress’s data model essentially handles abstraction with: One fairly generic content object table: wp_posts Field Type ID bigint(20)  unsigned post_author bigint(20)  unsigned post_date datetime post_date_gmt datetime post_content longtext post_title text post_excerpt text post_status varchar(20) post_parent comment_status varchar(20) object hierarchy ping_status post_password varchar(20) varchar(20) post_name varchar(200) to_ping text pinged text post_modified datetime post_modified_gmt datetime post_content_filtered longtext post_parent bigint(20)  unsigned guid varchar(255) menu_order int(11) post_type varchar(20) post_mime_type varchar(100) comment_count bigint(20)
  • 18. WordPress’s data model essentially handles abstraction with: One fairly generic content object table: wp_posts Field Type ID bigint(20)  unsigned post_author bigint(20)  unsigned post_date datetime post_date_gmt datetime post_content longtext post_title text post_excerpt text post_status varchar(20) menu_order comment_status varchar(20) relative order of content ping_status post_password varchar(20) varchar(20) post_name varchar(200) to_ping text pinged text post_modified datetime post_modified_gmt datetime post_content_filtered longtext post_parent bigint(20)  unsigned guid varchar(255) menu_order int(11) post_type varchar(20) post_mime_type varchar(100) comment_count bigint(20)
  • 19. WordPress’s data model essentially handles abstraction with: One fairly generic content object table: wp_posts Field Type ID bigint(20)  unsigned post_author bigint(20)  unsigned post_date datetime post_date_gmt datetime post_content longtext post_title text post_excerpt text post_type (!!!) post_status comment_status varchar(20) varchar(20) generic identifier for type of ping_status varchar(20) content object post_password post_name varchar(20) varchar(200) to_ping text pinged text post_modified datetime post_modified_gmt datetime post_content_filtered longtext post_parent bigint(20)  unsigned guid varchar(255) menu_order int(11) post_type varchar(20) post_mime_type varchar(100) comment_count bigint(20)
  • 20. WordPress’s data model essentially handles abstraction with: One fairly generic content object table: wp_posts Field Type ID bigint(20)  unsigned post_author bigint(20)  unsigned post_date datetime post_date_gmt datetime post_content longtext post_title text post_mime_type post_excerpt post_status text varchar(20) standards based identifier of comment_status varchar(20) the type of information ping_status post_password varchar(20) varchar(20) contained in content post_name varchar(200) to_ping text pinged text post_modified datetime post_modified_gmt datetime post_content_filtered longtext post_parent bigint(20)  unsigned guid varchar(255) menu_order int(11) post_type varchar(20) post_mime_type varchar(100) comment_count bigint(20)
  • 21. WordPress’s data model essentially handles abstraction with: A completely abstract content object properties table: wp_postmeta Field Type meta_id bigint(20) post_id bigint(20) meta_key varchar(255) meta_value text Meta data is defined as “data about data.” It doesn’t get more abstract.
  • 22. WordPress’s data model essentially handles abstraction with: A completely abstract content object properties table: wp_postmeta Field Type meta_id bigint(20) post_id bigint(20) meta_key varchar(255) identifier of content object meta_value text this is all about Meta data is defined as “data about data.” It doesn’t get more abstract.
  • 23. WordPress’s data model essentially handles abstraction with: A completely abstract content object properties table: wp_postmeta Field Type meta_id bigint(20) post_id bigint(20) arbitrary identifier for the meta_key varchar(255) content property we want meta_value text to define Meta data is defined as “data about data.” It doesn’t get more abstract.
  • 24. WordPress’s data model essentially handles abstraction with: A completely abstract content object properties table: wp_postmeta Field Type meta_id bigint(20) post_id bigint(20) arbitrary value for our meta_key varchar(255) arbitrary property meta_value text Meta data is defined as “data about data.” It doesn’t get more abstract.
  • 25. WordPress’s data model essentially handles abstraction with: An abstract set of tables for content classification.
  • 26. WordPress’s data model essentially handles abstraction with: An abstract set of tables for content classification. Field Type term_id bigint(20)  unsigned name varchar(200) slug varchar(200) term_group bigint(10) wp_terms Arbitrary classifications for content objects.
  • 27. WordPress’s data model essentially handles abstraction with: An abstract set of tables for content classification. Field Type Field Type term_taxonomy_id bigint(20)  unsigned term_id bigint(20)  unsigned term_id bigint(20)  unsigned name varchar(200) taxonomy varchar(32) slug varchar(200) description longtext term_group bigint(10) parent bigint(20)  unsigned count bigint(20) wp_terms Arbitrary classifications for wp_term_taxonomy content objects. Describes the arbitrary classification (term) for each unique classification group (taxonomy).
  • 28. WordPress’s data model essentially handles abstraction with: An abstract set of tables for content classification. Field Type Field Type Field Type term_taxonomy_id bigint(20)  unsigned term_id bigint(20)  unsigned object_id bigint(20)  unsigned term_id bigint(20)  unsigned name varchar(200) term_taxonomy_id bigint(20)  unsigned taxonomy varchar(32) slug varchar(200) term_order int(11) description longtext term_group bigint(10) parent bigint(20)  unsigned wp_term_relationships wp_terms Associates classifications with count bigint(20) Arbitrary classifications for content objects. wp_term_taxonomy content objects. Describes the arbitrary classification (term) for each unique classification group (taxonomy).
  • 29. WordPress’s data model essentially handles abstraction with: An abstract set of tables for content classification. Field Type Field Type term_taxonomy_id bigint(20)  unsigned term_id bigint(20)  unsigned term_id taxonomy bigint(20)  unsigned varchar(32) name slug varchar(200) varchar(200) Huh? description longtext term_group bigint(10) ... oops. parent bigint(20)  unsigned count bigint(20) wp_terms Arbitrary classifications for wp_term_taxonomy content objects. Describes the arbitrary classification (term) for each unique classification group (taxonomy).
  • 30. WordPress’s data model essentially handles abstraction with: An abstract set of tables for content classification. Field Type Anything else here surprise you? object_id bigint(20)  unsigned term_taxonomy_id bigint(20)  unsigned term_order int(11) wp_term_relationships Associates classifications with content objects.
  • 31. WordPress’s data model essentially handles abstraction with: An abstract set of tables for content classification. Field Type Anything else here surprise you? object_id bigint(20)  unsigned term_taxonomy_id bigint(20)  unsigned term_order (??) term_order int(11) WordPress’s API does not support ordering terms. Its wp_term_relationships data model actually does. Associates classifications with content objects.
  • 32. WordPress’s data model essentially handles abstraction with: An abstract set of tables for content classification. Field Type Anything else here surprise you? object_id bigint(20)  unsigned term_taxonomy_id bigint(20)  unsigned term_order (??) term_order int(11) WordPress’s API does not support ordering terms. Its wp_term_relationships data model actually does. Associates classifications with content objects. Where’s term meta? The data model doesn’t yet (really) support arbitrary data about a classification / term.
  • 33. WordPress’s data model essentially handles abstraction with: A completely abstract global data table: wp_options Field Type option_id bigint(20)  unsigned option_name varchar(64) option_value longtext autoload varchar(20)
  • 34. WordPress’s data model essentially handles abstraction with: A completely abstract global data table: wp_options Field Type option_id bigint(20)  unsigned option_name varchar(64) arbitrary name of data option_value longtext autoload varchar(20)
  • 35. WordPress’s data model essentially handles abstraction with: A completely abstract global data table: wp_options Field Type option_id bigint(20)  unsigned option_name varchar(64) arbitrary value option_value longtext for said data autoload varchar(20)
  • 36. Other tables and abstraction! wp_comments & wp_commentmeta Comments are a specific type of content object, separated for legacy and scalability reasons. wp_users & wp_usermeta Users a special object (not really content). Also have arbitrary properties / meta data. wp_links A specific content object (and leftover.)
  • 37.
  • 38. How did we get here? Why do we call content objects “posts”? And why the heck is there a “links” table?
  • 40. WordPress 1.5: Blogging Software Tables: wp_categories wp_comments wp_linkcategories wp_links wp_options wp_post2cat wp_postmeta wp_posts wp_users
  • 41. WordPress 1.5*: Blogging Software Field Type Tables: ID post_author bigint(20)  unsigned int(4) wp_categories post_date post_date_gmt datetime datetime wp_comments post_content post_title longtext text wp_linkcategories post_category post_excerpt int(4) text wp_links post_status enum('publish','draft','private','static','object') wp_options comment_status enum('open','closed','registered_only') ping_status enum('open','closed') wp_post2cat post_password post_name varchar(20) varchar(200) wp_postmeta to_ping pinged text text wp_posts post_modified post_modified_gmt datetime datetime wp_users post_content_filtered post_parent text int(11) guid varchar(255) menu_order int(11)
  • 42. WordPress 1.5: Blogging Software Tables: Field Type wp_categories meta_id bigint(20) wp_comments post_id bigint(20) meta_key varchar(255) wp_linkcategories meta_value text wp_links wp_options wp_post2cat wp_postmeta wp_posts wp_users
  • 43. WordPress 1.5: Blogging Software Tables: Field Type wp_categories meta_id bigint(20) wp_comments post_id bigint(20) meta_key varchar(255) wp_linkcategories meta_value text wp_links wp_options Arbitrary content (post) meta data! wp_post2cat Early sign of data model wp_postmeta abstraction... and possibility! wp_posts wp_users
  • 44. WordPress 2.0: Foundation for Content Abstraction Field Type Tables: ID bigint(20)  unsigned post_author bigint(20) post_date datetime wp_categories post_date_gmt post_content datetime longtext wp_comments post_title post_category text int(4) wp_linkcategories post_excerpt post_status text enum('publish','draft','private','static','object',  'attachment') wp_links comment_status ping_status enum('open','closed','registered_only') enum('open','closed') wp_options post_password post_name varchar(20) varchar(200) wp_post2cat to_ping pinged text text wp_postmeta post_modified post_modified_gmt datetime datetime wp_posts post_content_filtered post_parent text bigint(20) wp_usermeta guid menu_order varchar(255) int(11) wp_users post_type post_mime_type varchar(100) varchar(100) comment_count bigint(20)
  • 45. WordPress 2.0: Foundation for Content Abstraction Field Type Tables: ID bigint(20)  unsigned post_author bigint(20) post_date datetime wp_categories post_date_gmt post_content datetime longtext wp_comments post_title post_category text int(4) wp_linkcategories post_excerpt post_status text enum('publish','draft','private','static','object',  'attachment') wp_links comment_status ping_status enum('open','closed','registered_only') enum('open','closed') wp_options post_password post_name varchar(20) varchar(200) wp_post2cat to_ping pinged text text Origin: Pages & Media. wp_postmeta post_modified post_modified_gmt datetime datetime Post type API wouldn’t come till 3.0! wp_posts post_content_filtered post_parent text bigint(20) wp_usermeta guid menu_order varchar(255) int(11) wp_users post_type post_mime_type varchar(100) varchar(100) comment_count bigint(20)
  • 46. WordPress 2.0: Foundation for Content Types Tables: wp_categories wp_comments wp_linkcategories wp_links wp_options wp_post2cat wp_postmeta wp_posts wp_usermeta wp_users
  • 47. WordPress 2.0: Foundation for Content Types Tables: Field Type wp_categories umeta_id bigint(20) wp_comments user_id bigint(20) meta_key varchar(255) wp_linkcategories meta_value longtext wp_links wp_options User objects are now extensible wp_post2cat with arbitrary meta data. wp_postmeta More signs of extensibility! wp_posts wp_usermeta wp_users
  • 49. WordPress 2.3: Classifications Get Abstract Tables: Removed Tables: wp_comments wp_categories wp_links wp_linkcategories wp_options wp_post2cat wp_postmeta wp_posts wp_terms wp_term_relationships wp_term_taxonomy wp_usermeta wp_users
  • 50. WordPress 2.3: Classifications Get Abstract Tables: Removed Tables: wp_comments wp_categories wp_links wp_linkcategories wp_options wp_post2cat wp_postmeta wp_posts Impetus: Tags. wp_terms Taxonomy registration API wp_term_relationships wouldn’t come till 2.9! wp_term_taxonomy Category fields in post and wp_usermeta links tables don’t get removed until 2.8. wp_users
  • 51. WordPress 2.5: Enum Values Fade Away post_status,  comment_status,  ping_status in wp_posts table change from enumerated list (enforced options in data model) to freeform field term_order   curiously gets added to wp_term_relationships table
  • 52. WordPress 2.9: Comment Objects Get Meta
  • 53. WordPress 2.9: Comment Objects Get Meta Tables: wp_comments wp_commentmeta wp_links wp_options wp_postmeta wp_posts wp_terms wp_term_relationships wp_term_taxonomy wp_usermeta wp_users
  • 54. WordPress 3.0: Groups of Objects WordPress Network Mode (Multisite) (which we’re not going to study for time’s sake) more detail: http://codex.wordpress.org/Database_Description/2.0
  • 55. The Future of WordPress’s Data Model
  • 56. The Future of WordPress’s Data Model
  • 57. The Future of WordPress’s Data Model • Clean up of taxonomy tables, and addition of term meta data? • Legacy specific content object tables (links) fall away? (note 3.5) • Post table fields very specific to blog posts get moved over to post meta or taxonomies? • Improvements to relationships between content objects?
  • 58. The Core of WordPress Core Thanks! Slides will be available at 10up.com. Feedback? Want more? @jakemgold on Twitter