Make WordPress Core


Ignore:
Timestamp:
06/07/2006 11:17:59 PM (20 years ago)
Author:
ryan
Message:

Reworg post/page/attachment functions. #2525

File:
1 moved

Legend:

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

    r3845 r3851  
    11<?php
    22
    3 function get_the_password_form() {
    4         $output = '<form action="' . get_settings('siteurl') . '/wp-pass.php" method="post">
    5         <p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
    6         <p><label>' . __("Password:") . ' <input name="post_password" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . __("Submit") . '" /></p>
    7         </form>
    8         ';
    9         return $output;
    10 }
    11 
     3//
     4// "The Loop" post functions
     5//
    126
    137function the_ID() {
    … …  
    1610}
    1711
     12
    1813function get_the_ID() {
    1914        global $id;
    2015        return $id;
    2116}
     17
    2218
    2319function the_title($before = '', $after = '', $echo = true) {
    … …  
    4339}
    4440
     41function the_guid( $id = 0 ) {
     42        echo get_the_guid($id);
     43}
    4544
    4645function get_the_guid( $id = 0 ) {
    … …  
    4948        return apply_filters('get_the_guid', $post->guid);
    5049}
    51 
    52 
    53 function the_guid( $id = 0 ) {
    54         echo get_the_guid($id);
    55 }
    56 
    5750
    5851function the_content($more_link_text = '(more...)', $stripteaser = 0, $more_file = '') {
    … …  
    191184
    192185
    193 /*
    194 Post-meta: Custom per-post fields.
    195 */
    196 
    197 
    198 function get_post_custom( $post_id = 0 ) {
    199         global $id, $post_meta_cache, $wpdb;
    200 
    201         if ( ! $post_id )
    202                 $post_id = $id;
    203 
    204         if ( isset($post_meta_cache[$post_id]) )
    205                 return $post_meta_cache[$post_id];
    206 
    207         if ( $meta_list = $wpdb->get_results("SELECT post_id, meta_key, meta_value FROM $wpdb->postmeta WHERE post_id = '$post_id' ORDER BY post_id, meta_key", ARRAY_A) ) {
    208                 // Change from flat structure to hierarchical:
    209                 $post_meta_cache = array();
    210                 foreach ( $meta_list as $metarow ) {
    211                         $mpid = $metarow['post_id'];
    212                         $mkey = $metarow['meta_key'];
    213                         $mval = $metarow['meta_value'];
    214 
    215                         // Force subkeys to be array type:
    216                         if ( !isset($post_meta_cache[$mpid]) || !is_array($post_meta_cache[$mpid]) )
    217                                 $post_meta_cache[$mpid] = array();
    218 
    219                         if ( !isset($post_meta_cache[$mpid]["$mkey"]) || !is_array($post_meta_cache[$mpid]["$mkey"]) )
    220                                 $post_meta_cache[$mpid]["$mkey"] = array();
    221 
    222                         // Add a value to the current pid/key:
    223                         $post_meta_cache[$mpid][$mkey][] = $mval;
    224                 }
    225                 return $post_meta_cache[$mpid];
    226         }
    227 }
    228 
    229 
    230 function get_post_custom_keys() {
    231         $custom = get_post_custom();
    232 
    233         if ( ! is_array($custom) )
    234                 return;
    235 
    236         if ( $keys = array_keys($custom) )
    237                 return $keys;
    238 }
    239 
    240 
    241 function get_post_custom_values( $key = '' ) {
    242         $custom = get_post_custom();
    243 
    244         return $custom[$key];
    245 }
     186//
     187// Post-meta: Custom per-post fields.
     188//
    246189
    247190
    … …  
    275218
    276219
    277 /*
    278 Pages
    279 */
     220//
     221// Pages
     222//
     223
     224function wp_dropdown_pages($args = '') {
     225        if ( is_array($args) )
     226                $r = &$args;
     227        else
     228                parse_str($args, $r);
     229
     230        $defaults = array('depth' => 0, 'child_of' => 0, 'selected' => 0, 'echo' => 1,
     231                'name' => 'page_id');
     232        $r = array_merge($defaults, $r);
     233        extract($r);
     234
     235        $pages = get_pages($r);
     236        $output = '';
     237
     238        if ( ! empty($pages) ) {
     239                $output = "<select name='$name'>\n";
     240                $output .= walk_page_dropdown_tree($pages, $depth, $r);
     241                $output .= "</select>\n";
     242        }
     243
     244        $output = apply_filters('wp_dropdown_pages', $output);
     245
     246        if ( $echo )
     247                echo $output;
     248
     249        return $output;
     250}
     251
     252function wp_list_pages($args = '') {
     253        if ( is_array($args) )
     254                $r = &$args;
     255        else
     256                parse_str($args, $r);
     257
     258        $defaults = array('depth' => 0, 'show_date' => '', 'date_format' => get_settings('date_format'),
     259                'child_of' => 0, 'title_li' => __('Pages'), 'echo' => 1);
     260        $r = array_merge($defaults, $r);
     261
     262        $output = '';
     263
     264        // Query pages.
     265        $pages = get_pages($r);
     266
     267        if ( !empty($pages) ) {
     268                if ( $r['title_li'] )
     269                        $output .= '<li class="pagenav">' . $r['title_li'] . '<ul>';
     270
     271                global $wp_query;
     272                $current_page = $wp_query->get_queried_object_id();
     273                $output .= walk_page_tree($pages, $r['depth'], $current_page, $r['show_date'], $r['date_format']);
     274
     275                if ( $r['title_li'] )
     276                        $output .= '</ul></li>';
     277        }
     278
     279        $output = apply_filters('wp_list_pages', $output);
     280
     281        if ( $r['echo'] )
     282                echo $output;
     283        else
     284                return $output;
     285}
     286
     287//
     288// Page helpers
     289//
    280290
    281291function walk_page_tree() {
    … …  
    291301}
    292302
    293 function &get_page_children($page_id, $pages) {
    294         global $page_cache;
    295 
    296         if ( empty($pages) )
    297                 $pages = &$page_cache;
    298 
    299         $page_list = array();
    300         foreach ( $pages as $page ) {
    301                 if ( $page->post_parent == $page_id ) {
    302                         $page_list[] = $page;
    303                         if ( $children = get_page_children($page->ID, $pages) )
    304                                 $page_list = array_merge($page_list, $children);
    305                 }
    306         }
    307         return $page_list;
    308 }
    309 
    310 
    311 function &get_pages($args = '') {
    312         global $wpdb;
    313 
    314         if ( is_array($args) )
    315                 $r = &$args;
    316         else
    317                 parse_str($args, $r);
    318 
    319         $defaults = array('child_of' => 0, 'sort_order' => 'ASC', 'sort_column' => 'post_title',
    320                                 'hierarchical' => 1, 'exclude' => '', 'include' => '', 'meta_key' => '', 'meta_value' => '');
    321         $r = array_merge($defaults, $r);
    322         extract($r);
    323 
    324         $inclusions = '';
    325         if ( !empty($include) ) {
    326                 $child_of = 0; //ignore child_of, exclude, meta_key, and meta_value params if using include
    327                 $exclude = ''; 
    328                 $meta_key = '';
    329                 $meta_value = '';
    330                 $incpages = preg_split('/[\s,]+/',$include);
    331                 if ( count($incpages) ) {
    332                         foreach ( $incpages as $incpage ) {
    333                                 if (empty($inclusions))
    334                                         $inclusions = ' AND ( ID = ' . intval($incpage) . ' ';
    335                                 else
    336                                         $inclusions .= ' OR ID = ' . intval($incpage) . ' ';
    337                         }
    338                 }
    339         }
    340         if (!empty($inclusions))
    341                 $inclusions .= ')';     
    342 
    343         $exclusions = '';
    344         if ( !empty($exclude) ) {
    345                 $expages = preg_split('/[\s,]+/',$exclude);
    346                 if ( count($expages) ) {
    347                         foreach ( $expages as $expage ) {
    348                                 if (empty($exclusions))
    349                                         $exclusions = ' AND ( ID <> ' . intval($expage) . ' ';
    350                                 else
    351                                         $exclusions .= ' AND ID <> ' . intval($expage) . ' ';
    352                         }
    353                 }
    354         }
    355         if (!empty($exclusions))
    356                 $exclusions .= ')';
    357 
    358         $query = "SELECT * FROM $wpdb->posts " ;
    359         $query .= ( empty( $meta_key ) ? "" : ", $wpdb->postmeta " ) ;
    360         $query .= " WHERE (post_type = 'page' AND post_status = 'publish') $exclusions $inclusions " ;
    361         $query .= ( empty( $meta_key ) | empty($meta_value)  ? "" : " AND ($wpdb->posts.ID = $wpdb->postmeta.post_id AND $wpdb->postmeta.meta_key = '$meta_key' AND $wpdb->postmeta.meta_value = '$meta_value' )" ) ;
    362         $query .= " ORDER BY " . $sort_column . " " . $sort_order ;
    363 
    364         $pages = $wpdb->get_results($query);
    365         $pages = apply_filters('get_pages', $pages, $r);
    366 
    367         if ( empty($pages) )
    368                 return array();
    369 
    370         // Update cache.
    371         update_page_cache($pages);
    372 
    373         if ( $child_of || $hierarchical )
    374                 $pages = & get_page_children($child_of, $pages);
    375 
    376         return $pages;
    377 }
    378 
    379 function wp_dropdown_pages($args = '') {
    380         if ( is_array($args) )
    381                 $r = &$args;
    382         else
    383                 parse_str($args, $r);
    384 
    385         $defaults = array('depth' => 0, 'child_of' => 0, 'selected' => 0, 'echo' => 1,
    386                 'name' => 'page_id');
    387         $r = array_merge($defaults, $r);
    388         extract($r);
    389 
    390         $pages = get_pages($r);
    391         $output = '';
    392 
    393         if ( ! empty($pages) ) {
    394                 $output = "<select name='$name'>\n";
    395                 $output .= walk_page_dropdown_tree($pages, $depth, $r);
    396                 $output .= "</select>\n";
    397         }
    398 
    399         $output = apply_filters('wp_dropdown_pages', $output);
    400 
    401         if ( $echo )
    402                 echo $output;
    403 
    404         return $output;
    405 }
    406 
    407 function wp_list_pages($args = '') {
    408         if ( is_array($args) )
    409                 $r = &$args;
    410         else
    411                 parse_str($args, $r);
    412 
    413         $defaults = array('depth' => 0, 'show_date' => '', 'date_format' => get_settings('date_format'),
    414                 'child_of' => 0, 'title_li' => __('Pages'), 'echo' => 1);
    415         $r = array_merge($defaults, $r);
    416 
    417         $output = '';
    418 
    419         // Query pages.
    420         $pages = get_pages($r);
    421 
    422         if ( !empty($pages) ) {
    423                 if ( $r['title_li'] )
    424                         $output .= '<li class="pagenav">' . $r['title_li'] . '<ul>';
    425 
    426                 global $wp_query;
    427                 $current_page = $wp_query->get_queried_object_id();
    428                 $output .= walk_page_tree($pages, $r['depth'], $current_page, $r['show_date'], $r['date_format']);
    429 
    430                 if ( $r['title_li'] )
    431                         $output .= '</ul></li>';
    432         }
    433 
    434         $output = apply_filters('wp_list_pages', $output);
    435 
    436         if ( $r['echo'] )
    437                 echo $output;
    438         else
    439                 return $output;
    440 }
     303//
     304// Attachments
     305//
    441306
    442307function the_attachment_link($id = 0, $fullsize = false, $max_dims = false) {
    … …  
    562427}
    563428
     429//
     430// Misc
     431//
     432
     433function get_the_password_form() {
     434        $output = '<form action="' . get_settings('siteurl') . '/wp-pass.php" method="post">
     435        <p>' . __("This post is password protected. To view it please enter your password below:") . '</p>
     436        <p><label>' . __("Password:") . ' <input name="post_password" type="password" size="20" /></label> <input type="submit" name="Submit" value="' . __("Submit") . '" /></p>
     437        </form>
     438        ';
     439        return $output;
     440}
     441
    564442?>
Note: See TracChangeset for help on using the changeset viewer.