it-swarm.com.ru

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

Я установил для блога другую страницу, отличную от домашней.

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

Есть ли какая-нибудь функция, которая вытягивает URL для блога?

34
Atif Mohammed Ameenuddin

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

<a href="<?php echo get_permalink( get_option( 'page_for_posts' ) ); ?>">Our Blog</a>
65
Bill Erickson

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

get_post_type_archive_link( 'post' );

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

20
SeventhSteel

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

if ( get_option( 'page_for_posts' ) ) {
   echo '<a href="'.esc_url(get_permalink( get_option( 'page_for_posts' ) )).'">'.esc_html__( 'Blog', 'textdomain' ).'</a>';
} else {
   echo '<a href="'.esc_url( home_url( '/' ) ).'">'.esc_html__( 'Blog', 'textdomain' ).'</a>';
}
4
Hooman Askari

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

<?php $postsPageId = get_option('page_for_posts'); ?>
<a href="index.php?p=<?php echo $postsPageId; ?>">Our Blog</a>

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

3
Sagive SEO

Согласитесь с Хью Маном, что перед повторением ссылки лучше проверить этот параметр, но можно установить статическую страницу в качестве главной страницы и оставить страницу постов пустой. В этом случае ссылка будет просто указывать на домашний 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( '/' ) );
    }
}
1
Dmitry Mayorov