mirror of
https://github.com/gosticks/wordpress-develop.git
synced 2026-10-04 14:47:02 +00:00
Permalinks for custom post types. Props prettyboymp. see #9674
git-svn-id: https://develop.svn.wordpress.org/trunk@12923 602fd350-edb4-49c9-b593-d223f7449a82
This commit is contained in:
@@ -104,8 +104,10 @@ function get_permalink($id = 0, $leavename = false) {
|
||||
|
||||
if ( $post->post_type == 'page' )
|
||||
return get_page_link($post->ID, $leavename, $sample);
|
||||
elseif ($post->post_type == 'attachment')
|
||||
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_link($post);
|
||||
|
||||
$permalink = get_option('permalink_structure');
|
||||
|
||||
@@ -159,6 +161,43 @@ function get_permalink($id = 0, $leavename = false) {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve the permalink for a post with a custom post type.
|
||||
*
|
||||
* @since 3.0.0
|
||||
*
|
||||
* @param int $id Optional. Post ID.
|
||||
* @param bool $leavename Optional, defaults to false. Whether to keep post name.
|
||||
* @param bool $sample Optional, defaults to false. Is it a sample permalink.
|
||||
* @return string
|
||||
*/
|
||||
function get_post_link( $id = 0, $leavename = false, $sample = false ) {
|
||||
global $wp_rewrite;
|
||||
|
||||
$post = &get_post($id);
|
||||
|
||||
if ( is_wp_error( $post ) )
|
||||
return $post;
|
||||
|
||||
$post_link = $wp_rewrite->get_extra_permastruct($post->post_type);
|
||||
|
||||
$slug = $post->post_name;
|
||||
|
||||
if ( !empty($post_link) && ( ( isset($post->post_status) && 'draft' != $post->post_status && 'pending' != $post->post_status ) || $sample ) ) {
|
||||
$post_link = ( $leavename ) ? $post_link : str_replace("%$post->post_type%", $slug, $post_link);
|
||||
$post_link = home_url( user_trailingslashit($post_link) );
|
||||
} else {
|
||||
$post_type = get_post_type_object($post->post_type);
|
||||
if ( $post_type->query_var && ( isset($post->post_status) && 'draft' != $post->post_status && 'pending' != $post->post_status ) )
|
||||
$post_link = "?$post_type->query_var=$slug";
|
||||
else
|
||||
$post_link = "?post_type=$post->post_type&p=$post->ID";
|
||||
$post_link = home_url($post_link);
|
||||
}
|
||||
|
||||
return apply_filters('post_type_link', $post_link, $id);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve permalink from post ID.
|
||||
*
|
||||
|
||||
Reference in New Issue
Block a user