Make WordPress Core


Ignore:
Timestamp:
08/26/2015 12:39:07 PM (11 years ago)
Author:
wonderboymusic
Message:

Posts: move WP_Post into its own file. post.php loads the new files, so this is 100% BC if someone is loading post.php directly. New files created using svn cp.

Creates:
class-wp-post.php
post-functions.php

post.php contains only top-level code. Class file only contains the class. Functions file only contains functions.

See #33413.

File:
1 copied

Legend:

Unmodified
Added
Removed
  • trunk/src/wp-includes/post-functions.php

    r33758 r33759  
    455455
    456456        return $_post;
    457 }
    458 
    459 /**
    460  * WordPress Post class.
    461  *
    462  * @since 3.5.0
    463  *
    464  * @property string $page_template
    465  *
    466  * @property-read array  $ancestors
    467  * @property-read int    $post_category
    468  * @property-read string $tag_input
    469  *
    470  */
    471 final class WP_Post {
    472 
    473         /**
    474          * Post ID.
    475          *
    476          * @var int
    477          */
    478         public $ID;
    479 
    480         /**
    481          * ID of post author.
    482          *
    483          * A numeric string, for compatibility reasons.
    484          *
    485          * @var string
    486          */
    487         public $post_author = 0;
    488 
    489         /**
    490          * The post's local publication time.
    491          *
    492          * @var string
    493          */
    494         public $post_date = '0000-00-00 00:00:00';
    495 
    496         /**
    497          * The post's GMT publication time.
    498          *
    499          * @var string
    500          */
    501         public $post_date_gmt = '0000-00-00 00:00:00';
    502 
    503         /**
    504          * The post's content.
    505          *
    506          * @var string
    507          */
    508         public $post_content = '';
    509 
    510         /**
    511          * The post's title.
    512          *
    513          * @var string
    514          */
    515         public $post_title = '';
    516 
    517         /**
    518          * The post's excerpt.
    519          *
    520          * @var string
    521          */
    522         public $post_excerpt = '';
    523 
    524         /**
    525          * The post's status.
    526          *
    527          * @var string
    528          */
    529         public $post_status = 'publish';
    530 
    531         /**
    532          * Whether comments are allowed.
    533          *
    534          * @var string
    535          */
    536         public $comment_status = 'open';
    537 
    538         /**
    539          * Whether pings are allowed.
    540          *
    541          * @var string
    542          */
    543         public $ping_status = 'open';
    544 
    545         /**
    546          * The post's password in plain text.
    547          *
    548          * @var string
    549          */
    550         public $post_password = '';
    551 
    552         /**
    553          * The post's slug.
    554          *
    555          * @var string
    556          */
    557         public $post_name = '';
    558 
    559         /**
    560          * URLs queued to be pinged.
    561          *
    562          * @var string
    563          */
    564         public $to_ping = '';
    565 
    566         /**
    567          * URLs that have been pinged.
    568          *
    569          * @var string
    570          */
    571         public $pinged = '';
    572 
    573         /**
    574          * The post's local modified time.
    575          *
    576          * @var string
    577          */
    578         public $post_modified = '0000-00-00 00:00:00';
    579 
    580         /**
    581          * The post's GMT modified time.
    582          *
    583          * @var string
    584          */
    585         public $post_modified_gmt = '0000-00-00 00:00:00';
    586 
    587         /**
    588          * A utility DB field for post content.
    589          *
    590          *
    591          * @var string
    592          */
    593         public $post_content_filtered = '';
    594 
    595         /**
    596          * ID of a post's parent post.
    597          *
    598          * @var int
    599          */
    600         public $post_parent = 0;
    601 
    602         /**
    603          * The unique identifier for a post, not necessarily a URL, used as the feed GUID.
    604          *
    605          * @var string
    606          */
    607         public $guid = '';
    608 
    609         /**
    610          * A field used for ordering posts.
    611          *
    612          * @var int
    613          */
    614         public $menu_order = 0;
    615 
    616         /**
    617          * The post's type, like post or page.
    618          *
    619          * @var string
    620          */
    621         public $post_type = 'post';
    622 
    623         /**
    624          * An attachment's mime type.
    625          *
    626          * @var string
    627          */
    628         public $post_mime_type = '';
    629 
    630         /**
    631          * Cached comment count.
    632          *
    633          * A numeric string, for compatibility reasons.
    634          *
    635          * @var string
    636          */
    637         public $comment_count = 0;
    638 
    639         /**
    640          * Stores the post object's sanitization level.
    641          *
    642          * Does not correspond to a DB field.
    643          *
    644          * @var string
    645          */
    646         public $filter;
    647 
    648         /**
    649          * Retrieve WP_Post instance.
    650          *
    651          * @static
    652          * @access public
    653          *
    654          * @global wpdb $wpdb
    655          *
    656          * @param int $post_id Post ID.
    657          * @return WP_Post|false Post object, false otherwise.
    658          */
    659         public static function get_instance( $post_id ) {
    660                 global $wpdb;
    661 
    662                 $post_id = (int) $post_id;
    663                 if ( ! $post_id )
    664                         return false;
    665 
    666                 $_post = wp_cache_get( $post_id, 'posts' );
    667 
    668                 if ( ! $_post ) {
    669                         $_post = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM $wpdb->posts WHERE ID = %d LIMIT 1", $post_id ) );
    670 
    671                         if ( ! $_post )
    672                                 return false;
    673 
    674                         $_post = sanitize_post( $_post, 'raw' );
    675                         wp_cache_add( $_post->ID, $_post, 'posts' );
    676                 } elseif ( empty( $_post->filter ) ) {
    677                         $_post = sanitize_post( $_post, 'raw' );
    678                 }
    679 
    680                 return new WP_Post( $_post );
    681         }
    682 
    683         /**
    684          * Constructor.
    685          *
    686          * @param WP_Post|object $post Post object.
    687          */
    688         public function __construct( $post ) {
    689                 foreach ( get_object_vars( $post ) as $key => $value )
    690                         $this->$key = $value;
    691         }
    692 
    693         /**
    694          * Isset-er.
    695          *
    696          * @param string $key Property to check if set.
    697          * @return bool
    698          */
    699         public function __isset( $key ) {
    700                 if ( 'ancestors' == $key )
    701                         return true;
    702 
    703                 if ( 'page_template' == $key )
    704                         return ( 'page' == $this->post_type );
    705 
    706                 if ( 'post_category' == $key )
    707                    return true;
    708 
    709                 if ( 'tags_input' == $key )
    710                    return true;
    711 
    712                 return metadata_exists( 'post', $this->ID, $key );
    713         }
    714 
    715         /**
    716          * Getter.
    717          *
    718          * @param string $key Key to get.
    719          * @return mixed
    720          */
    721         public function __get( $key ) {
    722                 if ( 'page_template' == $key && $this->__isset( $key ) ) {
    723                         return get_post_meta( $this->ID, '_wp_page_template', true );
    724                 }
    725 
    726                 if ( 'post_category' == $key ) {
    727                         if ( is_object_in_taxonomy( $this->post_type, 'category' ) )
    728                                 $terms = get_the_terms( $this, 'category' );
    729 
    730                         if ( empty( $terms ) )
    731                                 return array();
    732 
    733                         return wp_list_pluck( $terms, 'term_id' );
    734                 }
    735 
    736                 if ( 'tags_input' == $key ) {
    737                         if ( is_object_in_taxonomy( $this->post_type, 'post_tag' ) )
    738                                 $terms = get_the_terms( $this, 'post_tag' );
    739 
    740                         if ( empty( $terms ) )
    741                                 return array();
    742 
    743                         return wp_list_pluck( $terms, 'name' );
    744                 }
    745 
    746                 // Rest of the values need filtering.
    747                 if ( 'ancestors' == $key )
    748                         $value = get_post_ancestors( $this );
    749                 else
    750                         $value = get_post_meta( $this->ID, $key, true );
    751 
    752                 if ( $this->filter )
    753                         $value = sanitize_post_field( $key, $value, $this->ID, $this->filter );
    754 
    755                 return $value;
    756         }
    757 
    758         /**
    759          * {@Missing Summary}
    760          *
    761          * @param string $filter Filter.
    762          * @return self|array|bool|object|WP_Post
    763          */
    764         public function filter( $filter ) {
    765                 if ( $this->filter == $filter )
    766                         return $this;
    767 
    768                 if ( $filter == 'raw' )
    769                         return self::get_instance( $this->ID );
    770 
    771                 return sanitize_post( $this, $filter );
    772         }
    773 
    774         /**
    775          * Convert object to array.
    776          *
    777          * @return array Object as array.
    778          */
    779         public function to_array() {
    780                 $post = get_object_vars( $this );
    781 
    782                 foreach ( array( 'ancestors', 'page_template', 'post_category', 'tags_input' ) as $key ) {
    783                         if ( $this->__isset( $key ) )
    784                                 $post[ $key ] = $this->__get( $key );
    785                 }
    786 
    787                 return $post;
    788         }
    789457}
    790458
Note: See TracChangeset for help on using the changeset viewer.