Php echo post permalink

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.

Читайте также:  Реализация нейронных сетей python
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:

#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

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 ); >

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()
Читайте также:  Дано натуральное число выведите его последнюю цифру python пример

Источник

Получает постоянную ссылку на запись, для дальнейшего использования в 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%

Список изменений

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вязанные функции

Записи: посты, страницы, .

  • 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()

Источник

Выводит УРЛ поста. Обычно используется внутри Цикла WordPress, однако если указать параметр $post (для какого поста нужно получить ссылку), то можно использовать за пределами цикла.

Хуки из функции

Возвращает

Использование

$post(число/объект) ID или объект записи (поста), ссылку на который нужно получить. С версии WP 4.4.
По умолчанию: ID текущего поста в цикле

Примеры

#1 Выведем ссылку на пост в виде простого текста, а не html ссылки

#2 Выведем html ссылку на текущий пост

#3 Выведем ссылку на текущий пост

Список изменений

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вязанные функции

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) ); Мне интересно, зачем вам нужны относительные УРЛ, какую цель преследуете?

Источник

Оцените статью