Как получить постоянную ссылку (permalink) для произвольного типа записи?

25 окт. 2011 г., 05:26:22
Просмотры: 62.8K
Голосов: 20

Я могу получить постоянную ссылку для конкретного тега записи или категории, но как получить постоянную ссылку для произвольного типа записи? Я не могу найти информацию об этом ни в Кодексе, ни где-либо еще.

0
Все ответы на вопрос 5
1
32

Как насчёт href="<?php echo get_post_type_archive_link( $post_type ); ?>", где $post_type — это ваш тип записи?

Дополнительные материалы: Кодекс

1 дек. 2011 г. 20:34:45
Комментарии

Небольшое улучшение; <?php echo get_post_type_archive_link( $post->post_type ); ?>

Использование $post->post_type вместо $post_type дает слаг напрямую.

rwzdoorn rwzdoorn
19 апр. 2022 г. 16:40:36
1

Внутри цикла можно просто использовать the_permalink(). За пределами цикла можно использовать get_permalink( $id ).

25 окт. 2011 г. 05:44:38
Комментарии

Это возвращает постоянную ссылку конкретной записи или страницы. Я хочу получить постоянную ссылку типа записи. Например, если есть тип записи с названием "обзоры фильмов", и постоянная ссылка этого типа записи "www.website.com/movie-reviews", как мне получить эту ссылку? Возможно, технически это не совсем постоянная ссылка, я просто хочу URL этого типа записи.

Industrial Themes Industrial Themes
25 окт. 2011 г. 15:48:59
0

Или, если это важно, get_term_link($term, $taxonomy); - Кодекс.

1 дек. 2011 г. 22:56:11
0

Я знаю, что этот пост может быть старым, но на случай, если кто-то ищет функцию для этого, вот та, которую я написал. Переменная $post_type должна быть передана в функцию :)

if( !function_exists( 'wp_get_post_type_link' )  ){
    function wp_get_post_type_link( &$post_type ){

        global $wp_rewrite; 

        if ( ! $post_type_obj = get_post_type_object( $post_type ) )
            return false;

        if ( get_option( 'permalink_structure' ) && is_array( $post_type_obj->rewrite ) ) {

            $struct = $post_type_obj->rewrite['slug'] ;
            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 );
        }

        return apply_filters( 'the_permalink', $link );
    }
}

Надеюсь, это поможет! :)

30 июл. 2012 г. 13:29:26
0

@Stefan KRUGER

интересно, почему значение передается по ссылке: &$post_type

примечание: я не понимаю, почему я могу предоставить ответ, который здесь не уместен, но НЕ могу оставить комментарий, который здесь как раз уместен. это кажется нелогичным.

25 авг. 2023 г. 03:02:43