- get_permalink() │ WP 1.0.0
- Return
- Usage
- Examples
- #1 Get a link to the current post
- #2 Get links to certain posts
- #3 Use with the second parameter
- Changelog
- get_permalink() get permalink code WP 6.2.2
- Related Functions
- permalinks (clean friendly URL)
- Posts, pages.
- get_permalink() │ WP 1.0.0
- Возвращает
- Использование
- Примеры
- #1 Получим ссылку на текущую запись
- #2 Получаем ссылки на определенные посты
- #3 Использование со вторым параметром
- Список изменений
- Код get_permalink() get permalink WP 6.2.2
- Cвязанные функции
- permalink (постоянные ссылки ЧПУ)
- Записи: посты, страницы, .
- Ссылки (УРЛы)
- the_permalink() │ WP 1.2.0
- Возвращает
- Использование
- Примеры
- #1 Выведем ссылку на пост в виде простого текста, а не html ссылки
- #2 Выведем html ссылку на текущий пост
- #3 Выведем ссылку на текущий пост
- Список изменений
- Код the_permalink() the permalink WP 6.2.2
- Cвязанные функции
- permalink (постоянные ссылки ЧПУ)
- loop (Цикл WP)
- Записи: посты, страницы, .
- Ссылки (УРЛы)
get_permalink() │ WP 1.0.0
Gets a permanent link to the current or specified post, for further use in php. It does not display a link to the screen but returns it to a variable. Can be used outside of the WordPress Loop, for this, you need to specify the first parameter $id — ID of the post, the link of which you want to get. Gets the URL of any post type, including static pages and newly created post types.
If you do not specify an ID parameter and use this function outside of the WordPress Loop on archive pages (categories, archive by date, archive by authors, etc.), the function will return a link to the last post displayed in the current page Loop, but not a link to the current page.
Hooks from the function
Return
Usage
get_permalink( $post, $leavename );
$post(int/WP_Post) Post ID or post object, which link we want to retrieve.
Default: is the global $post $leavename(true/false) Do not replace the name of the post in the link, i.e. do not replace the tag %postname% with the name of the post.
Default: false
Examples
#1 Get a link to the current post
Get a link to the post (inside the WordPress Loop). Since the function does not output data, you need to use php echo command:
#2 Get links to certain posts
#3 Use with the second parameter
Leave the tag %postname% unchanged, for example, we have such permalink structure /%post_id%/%postname% , then the function will work like this:
// displays: http://example.com/185/%postname%
Changelog
get_permalink() get permalink code WP 6.2.2
function get_permalink( $post = 0, $leavename = false ) < $rewritecode = array( '%year%', '%monthnum%', '%day%', '%hour%', '%minute%', '%second%', $leavename ? '' : '%postname%', '%post_id%', '%category%', '%author%', $leavename ? '' : '%pagename%', ); if ( is_object( $post ) && isset( $post->filter ) && 'sample' === $post->filter ) < $sample = true; >else < $post = get_post( $post ); $sample = false; >if ( empty( $post->ID ) ) < return false; >if ( 'page' === $post->post_type ) < return get_page_link( $post, $leavename, $sample ); >elseif ( 'attachment' === $post->post_type ) < return get_attachment_link( $post, $leavename ); >elseif ( in_array( $post->post_type, get_post_types( array( '_builtin' => false ) ), true ) ) < return get_post_permalink( $post, $leavename, $sample ); >$permalink = get_option( 'permalink_structure' ); /** * Filters the permalink structure for a post before token replacement occurs. * * Only applies to posts with post_type of 'post'. * * @since 3.0.0 * * @param string $permalink The site's permalink structure. * @param WP_Post $post The post in question. * @param bool $leavename Whether to keep the post name. */ $permalink = apply_filters( 'pre_post_link', $permalink, $post, $leavename ); if ( $permalink && ! wp_force_plain_post_permalink( $post ) ) < $category = ''; if ( strpos( $permalink, '%category%' ) !== false ) < $cats = get_the_category( $post->ID ); if ( $cats ) < $cats = wp_list_sort( $cats, array( 'term_id' =>'ASC', ) ); /** * Filters the category that gets used in the %category% permalink token. * * @since 3.5.0 * * @param WP_Term $cat The category to use in the permalink. * @param array $cats Array of all categories (WP_Term objects) associated with the post. * @param WP_Post $post The post in question. */ $category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post ); $category_object = get_term( $category_object, 'category' ); $category = $category_object->slug; if ( $category_object->parent ) < $category = get_category_parents( $category_object->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' ); if ( $default_category && ! is_wp_error( $default_category ) ) < $category = $default_category->slug; > > > $author = ''; if ( strpos( $permalink, '%author%' ) !== false ) < $authordata = get_userdata( $post->post_author ); $author = $authordata->user_nicename; > // This is not an API call because the permalink is based on the stored post_date value, // which should be parsed as local time regardless of the default PHP timezone. $date = explode( ' ', str_replace( array( '-', ':' ), ' ', $post->post_date ) ); $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 ); > /** * Filters the permalink for a post. * * Only applies to posts with post_type of 'post'. * * @since 1.5.0 * * @param string $permalink The post's permalink. * @param WP_Post $post The post in question. * @param bool $leavename Whether to keep the post name. */ return apply_filters( 'post_link', $permalink, $post, $leavename ); >
Related Functions
permalinks (clean friendly URL)
Posts, pages.
- edit_post_link()
- get_delete_post_link()
- get_edit_post_link()
- get_post_field()
- get_post_status()
- get_post_time()
- get_the_content()
- get_the_date()
- get_the_excerpt()
- get_the_ID()
- get_the_modified_date()
- get_the_modified_time()
- get_the_time()
- get_the_title()
- get_the_title_rss()
- has_excerpt()
- post_password_required()
- register_post_status()
- single_post_title()
- the_author()
- the_content()
- the_date()
- the_excerpt()
- the_excerpt_rss()
- the_ID()
- the_modified_date()
- the_time()
- the_title()
- the_title_attribute()
get_permalink() │ WP 1.0.0
Получает постоянную ссылку на запись, для дальнейшего использования в php. Может быть использована за пределами Цикла WordPress, для этого нужно указывать первый параметр — ID поста, ссылку на который нужно получить. Получает URL для любого типа записи: post , page и произвольный тип записи.
Заметка: Если не указать параметр ID и использовать эту функция за пределами Цикла WordPress на страницах архивов (категории, архив по дате, архив по авторам и т.д.), функция вернет ссылку на последнюю статью выводимую в Цикле текущей страницы, а не ссылку на текущую страницу.
Хуки из функции
Возвращает
Использование
$url = get_permalink( $post, $leavename );
$post(число/объект) ID или объект записи (поста), ссылку на который нужно получить.
По умолчанию: 0 (ID текущего поста) $leavename(логический) Не заменять имя поста в ссылке, т.е. не заменять тег %postname% на имя поста.
По умолчанию: false
Примеры
#1 Получим ссылку на текущую запись
Получить ссылку на пост (внутри Цикла WordPress). Так как функция не выводит данные, то нужно использовать php команду echo :
Постоянная ссылка на пост:
#2 Получаем ссылки на определенные посты
#3 Использование со вторым параметром
Оставляем тег %postname% неизменным, например у нас в ЧПУ стоит структура %post_id%/%postname% , тогда функция сработает так:
// выведет: http://example.com/185/%postname%
Список изменений
Код get_permalink() get permalink WP 6.2.2
function get_permalink( $post = 0, $leavename = false ) < $rewritecode = array( '%year%', '%monthnum%', '%day%', '%hour%', '%minute%', '%second%', $leavename ? '' : '%postname%', '%post_id%', '%category%', '%author%', $leavename ? '' : '%pagename%', ); if ( is_object( $post ) && isset( $post->filter ) && 'sample' === $post->filter ) < $sample = true; >else < $post = get_post( $post ); $sample = false; >if ( empty( $post->ID ) ) < return false; >if ( 'page' === $post->post_type ) < return get_page_link( $post, $leavename, $sample ); >elseif ( 'attachment' === $post->post_type ) < return get_attachment_link( $post, $leavename ); >elseif ( in_array( $post->post_type, get_post_types( array( '_builtin' => false ) ), true ) ) < return get_post_permalink( $post, $leavename, $sample ); >$permalink = get_option( 'permalink_structure' ); /** * Filters the permalink structure for a post before token replacement occurs. * * Only applies to posts with post_type of 'post'. * * @since 3.0.0 * * @param string $permalink The site's permalink structure. * @param WP_Post $post The post in question. * @param bool $leavename Whether to keep the post name. */ $permalink = apply_filters( 'pre_post_link', $permalink, $post, $leavename ); if ( $permalink && ! wp_force_plain_post_permalink( $post ) ) < $category = ''; if ( strpos( $permalink, '%category%' ) !== false ) < $cats = get_the_category( $post->ID ); if ( $cats ) < $cats = wp_list_sort( $cats, array( 'term_id' =>'ASC', ) ); /** * Filters the category that gets used in the %category% permalink token. * * @since 3.5.0 * * @param WP_Term $cat The category to use in the permalink. * @param array $cats Array of all categories (WP_Term objects) associated with the post. * @param WP_Post $post The post in question. */ $category_object = apply_filters( 'post_link_category', $cats[0], $cats, $post ); $category_object = get_term( $category_object, 'category' ); $category = $category_object->slug; if ( $category_object->parent ) < $category = get_category_parents( $category_object->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' ); if ( $default_category && ! is_wp_error( $default_category ) ) < $category = $default_category->slug; > > > $author = ''; if ( strpos( $permalink, '%author%' ) !== false ) < $authordata = get_userdata( $post->post_author ); $author = $authordata->user_nicename; > // This is not an API call because the permalink is based on the stored post_date value, // which should be parsed as local time regardless of the default PHP timezone. $date = explode( ' ', str_replace( array( '-', ':' ), ' ', $post->post_date ) ); $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 ); > /** * Filters the permalink for a post. * * Only applies to posts with post_type of 'post'. * * @since 1.5.0 * * @param string $permalink The post's permalink. * @param WP_Post $post The post in question. * @param bool $leavename Whether to keep the post name. */ return apply_filters( 'post_link', $permalink, $post, $leavename ); >
Cвязанные функции
permalink (постоянные ссылки ЧПУ)
Записи: посты, страницы, .
- edit_post_link()
- get_delete_post_link()
- get_edit_post_link()
- get_post_field()
- get_post_status()
- get_post_time()
- get_the_content()
- get_the_date()
- get_the_excerpt()
- get_the_ID()
- get_the_modified_date()
- get_the_modified_time()
- get_the_time()
- get_the_title()
- get_the_title_rss()
- has_excerpt()
- post_password_required()
- register_post_status()
- single_post_title()
- the_author()
- the_content()
- the_date()
- the_excerpt()
- the_excerpt_rss()
- the_ID()
- the_modified_date()
- the_time()
- the_title()
- the_title_attribute()
Ссылки (УРЛы)
- admin_url()
- edit_tag_link()
- get_admin_url()
- get_home_url()
- get_privacy_policy_url()
- get_search_query()
- get_site_url()
- get_theme_file_uri()
- home_url()
- site_url()
- the_privacy_policy_link()
the_permalink() │ WP 1.2.0
Выводит УРЛ поста. Обычно используется внутри Цикла WordPress, однако если указать параметр $post (для какого поста нужно получить ссылку), то можно использовать за пределами цикла.
Хуки из функции
Возвращает
Использование
$post(число/объект) ID или объект записи (поста), ссылку на который нужно получить. С версии WP 4.4.
По умолчанию: ID текущего поста в цикле
Примеры
#1 Выведем ссылку на пост в виде простого текста, а не html ссылки
#2 Выведем html ссылку на текущий пост
#3 Выведем ссылку на текущий пост
Список изменений
Код the_permalink() the permalink WP 6.2.2
function the_permalink( $post = 0 ) < /** * Filters the display of the permalink for the current post. * * @since 1.5.0 * @since 4.4.0 Added the `$post` parameter. * * @param string $permalink The permalink for the current post. * @param int|WP_Post $post Post ID, WP_Post object, or 0. Default 0. */ echo esc_url( apply_filters( 'the_permalink', get_permalink( $post ), $post ) ); >
Cвязанные функции
permalink (постоянные ссылки ЧПУ)
loop (Цикл WP)
- get_the_author()
- get_the_author_link()
- get_the_content()
- get_the_excerpt()
- get_the_ID()
- get_the_tag_list()
- get_the_tags()
- setup_postdata()
- the_author()
- the_content()
- the_date()
- the_excerpt()
- the_ID()
- the_post()
- the_tags()
- the_time()
Записи: посты, страницы, .
- edit_post_link()
- get_delete_post_link()
- get_edit_post_link()
- get_post_field()
- get_post_status()
- get_post_time()
- get_the_date()
- get_the_modified_date()
- get_the_modified_time()
- get_the_time()
- get_the_title()
- get_the_title_rss()
- has_excerpt()
- post_password_required()
- register_post_status()
- single_post_title()
- the_excerpt_rss()
- the_modified_date()
- the_title()
- the_title_attribute()
Ссылки (УРЛы)
- admin_url()
- edit_tag_link()
- get_admin_url()
- get_home_url()
- get_privacy_policy_url()
- get_search_query()
- get_site_url()
- get_theme_file_uri()
- home_url()
- site_url()
- the_privacy_policy_link()
Здравствуйте! Подскажите пожалуйста как здесь сделать чтобы выводилась ссылка не на аттачмент а на пост к которому данная картинка относится. пробовал делать так:
the_permalink($post->post_parent);
Здравствуйте! Подскажите, пожалуйста! Как сделать вывод ссылок без www и названия сайта при помощи этой или другой функции? Чтобы ссылки выводились как внутренние. Например, было http://www.example.com/news а стало /news Заранее большое спасибо!
$link = 'http://www.example.com/news'; $link = wp_make_link_relative( $link ); echo $link; // выведет: /news
Замените get_permalink($post_new->ID);
на
wp_make_link_relative( get_permalink($post_new->ID) ); Мне интересно, зачем вам нужны относительные УРЛ, какую цель преследуете?