Получить URL страницы блога, установленной в настройках

28 апр. 2012 г., 12:56:00
Просмотры: 80.7K
Голосов: 54

Я настроил блог на отдельной странице, отличной от главной страницы.

Я хочу добавить ссылку с single.php на эту страницу блога.

Существует ли функция, которая возвращает URL страницы блога?

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

Чтобы продолжить ответ Sagive, вам нужно обернуть ID в get_permalink(), чтобы получить реальную ссылку.

<a href="<?php echo get_permalink( get_option( 'page_for_posts' ) ); ?>">Наш Блог</a>
28 апр. 2012 г. 19:19:44
0
49

Начиная с WordPress 4.5 вы можете использовать:

get_post_type_archive_link( 'post' );

Этот метод автоматически определяет правильный URL, независимо от того, отображаются ли записи на главной странице или на специально указанной странице.

3 апр. 2017 г. 06:09:59
0

Лучший способ проверить опцию перед установкой постоянной ссылки:

if ( get_option( 'page_for_posts' ) ) {
   echo '<a href="'.esc_url(get_permalink( get_option( 'page_for_posts' ) )).'">'.esc_html__( 'Блог', 'textdomain' ).'</a>';
} else {
   echo '<a href="'.esc_url( home_url( '/' ) ).'">'.esc_html__( 'Блог', 'textdomain' ).'</a>';
}
2 мая 2016 г. 13:51:37
0

Вы можете использовать get_option с параметром page_for_posts для получения ID страницы, чтобы либо присвоить его переменной, либо вывести, если вы хотите это сделать.

<?php $postsPageId = get_option('page_for_posts'); ?>
<a href="index.php?p=<?php echo $postsPageId; ?>">Наш Блог</a>

Для дополнительной информации о стандартной функции get_option посетите: Справочник по опциям

28 апр. 2012 г. 14:46:34
1

Согласен с Хью Мэном, что лучше проверить опцию перед выводом ссылки, но можно установить статическую страницу в качестве главной и оставить страницу записей пустой. В этом случае ссылка будет просто вести на главный URL. Лучший подход — предусмотреть резервный вариант для архива записей. Например, так:

function slug_all_posts_link() {
    if ( 'page' == get_option( 'show_on_front' ) ) {
        if ( get_option( 'page_for_posts' ) ) {
            echo esc_url( get_permalink( get_option( 'page_for_posts' ) ) );
        } else {
            echo esc_url( home_url( '/?post_type=post' ) );
        }
    } else {
        echo esc_url( home_url( '/' ) );
    }
}
7 июн. 2016 г. 12:26:05
Комментарии

Вам не нужно использовать esc_url для функций get_permalink и home_url

Anatol Bivol Anatol Bivol
7 апр. 2017 г. 10:48:04