Definition:
function get_permalink($id = 0, $leavename = false) {}
Retrieve full permalink for current post or post ID.
Parameters
- int $id: Optional. Post ID.
- bool $leavename: Optional, defaults to false. Whether to keep post name or page name.
Defined filters
- pre_post_link
apply_filters('pre_post_link', $permalink, $post, $leavename)
- post_link
apply_filters('post_link', $permalink, $post, $leavename)
Source code
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->ID, $leavename, $sample); elseif ( $post->post_type == 'attachment' ) return get_attachment_link($post->ID); elseif ( in_array($post->post_type, get_post_types( array('_builtin' => false) ) ) ) return get_post_permalink($post->ID, $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 = $cats[0]->slug; if ( $parent = $cats[0]->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_category( get_option( 'default_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); }
1554
No comments yet... Be the first to leave a reply!