get_post_type_archive_link( string $post_type ): string|false
Retrieves the permalink for a post type archive.
Parameters
-
$post_type
string Required -
Post type.
Return
string|false The post type archive permalink. False if the post type does not exist or does not have an archive.
Source
File: wp-includes/link-template.php
.
View all references
function get_post_type_archive_link( $post_type ) {
global $wp_rewrite;
$post_type_obj = get_post_type_object( $post_type );
if ( ! $post_type_obj ) {
return false;
}
if ( 'post' === $post_type ) {
$show_on_front = get_option( 'show_on_front' );
$page_for_posts = get_option( 'page_for_posts' );
if ( 'page' === $show_on_front && $page_for_posts ) {
$link = get_permalink( $page_for_posts );
} else {
$link = get_home_url();
}
/** This filter is documented in wp-includes/link-template.php */
return apply_filters( 'post_type_archive_link', $link, $post_type );
}
if ( ! $post_type_obj->has_archive ) {
return false;
}
if ( get_option( 'permalink_structure' ) && is_array( $post_type_obj->rewrite ) ) {
$struct = ( true === $post_type_obj->has_archive ) ? $post_type_obj->rewrite['slug'] : $post_type_obj->has_archive;
if ( $post_type_obj->rewrite['with_front'] ) {
$struct = $wp_rewrite->front . $struct;
} else {
$struct = $wp_rewrite->root . $struct;
}
$link = home_url( user_trailingslashit( $struct, 'post_type_archive' ) );
} else {
$link = home_url( '?post_type=' . $post_type );
}
/**
* Filters the post type archive permalink.
*
* @since 3.1.0
*
* @param string $link The post type archive permalink.
* @param string $post_type Post type name.
*/
return apply_filters( 'post_type_archive_link', $link, $post_type );
}
Hooks
-
apply_filters( 'post_type_archive_link',
string $link ,string $post_type ) -
Filters the post type archive permalink.
Changelog
Version | Description |
---|---|
4.5.0 | Support for posts was added. |
3.1.0 | Introduced. |
User Contributed Notes
You must log in before being able to contribute a note or feedback.
In the event that
get_post_type_archive_link()
does not work or returns false, double check if you have included the argumenthas_archive => true
when registering your post type.Example
This is the example for WordPress function that returns the URL of the archive page for a specific post type. It is used to retrieve the permalink for the post type’s archive. (For example, get the archive link for post type is “Book”)