関数 get_permalink()
2015/01/14
関数 get_permalink()
定義ファイル :/blog/wp-includes/link-template.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | function get_permalink( $id = 0, $leavename = false ) { $rewritecode = array( '%year%', '%monthnum%', '%day%', '%hour%', '%minute%', '%second%', $leavename? '' : '%postname%', '%post_id%', '%category%', '%author%', $leavename? '' : '%pagename%', ); if ( is_object($id) && isset($id->filter) && 'sample' == $id->filter ) { $post = $id; $sample = true; } else { $post = get_post($id); $sample = false; } if ( empty($post->ID) ) return false; if ( $post->post_type == 'page' ) return get_page_link($post, $leavename, $sample); elseif ( $post->post_type == 'attachment' ) return get_attachment_link( $post, $leavename ); elseif ( in_array($post->post_type, get_post_types( array('_builtin' => false) ) ) ) return get_post_permalink($post, $leavename, $sample); $permalink = get_option('permalink_structure'); $permalink = apply_filters( 'pre_post_link', $permalink, $post, $leavename ); if ( '' != $permalink && !in_array($post->post_status, array('draft', 'pending', 'auto-draft')) ) { $unixtime = strtotime($post->post_date); $category = ''; if ( strpos($permalink, '%category%') !== false ) { $cats = get_the_category($post->ID); if ( $cats ) { usort($cats, '_usort_terms_by_ID'); // order by ID $category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post ); $category_object = get_term( $category_object, 'category' ); $category = $category_object->slug; if ( $parent = $category_object->parent ) $category = get_category_parents($parent, false, '/', true) . $category; } // show default category in permalinks, without // having to assign it explicitly if ( empty($category) ) { $default_category = get_term( get_option( 'default_category' ), 'category' ); $category = is_wp_error( $default_category ) ? '' : $default_category->slug; } } $author = ''; if ( strpos($permalink, '%author%') !== false ) { $authordata = get_userdata($post->post_author); $author = $authordata->user_nicename; } $date = explode(" ",date('Y m d H i s', $unixtime)); $rewritereplace = array( $date[0], $date[1], $date[2], $date[3], $date[4], $date[5], $post->post_name, $post->ID, $category, $author, $post->post_name, ); $permalink = home_url( str_replace($rewritecode, $rewritereplace, $permalink) ); $permalink = user_trailingslashit($permalink, 'single'); } else { // if they're not using the fancy permalink option $permalink = home_url('?p=' . $post->ID); } return apply_filters( 'post_link', $permalink, $post, $leavename ); } |