Я установил для блога другую страницу, отличную от домашней.
Я хочу иметь ссылку с single.php на эту страницу блога.
Есть ли какая-нибудь функция, которая вытягивает URL для блога?
Я установил для блога другую страницу, отличную от домашней.
Я хочу иметь ссылку с single.php на эту страницу блога.
Есть ли какая-нибудь функция, которая вытягивает URL для блога?
Ответы:
Чтобы основываться на ответе Сагива, вам нужно обернуть идентификатор в get_permalink (), чтобы получить фактическую ссылку.
<a href="<?php echo get_permalink( get_option( 'page_for_posts' ) ); ?>">Our Blog</a>
Начиная с WordPress 4.5 вы можете использовать:
get_post_type_archive_link( 'post' );
Это обрабатывает логику получения правильного URL независимо от того, отображаются ли сообщения на домашней странице или на указанной странице.
Лучший способ проверить параметр перед установкой постоянной ссылки заключается в следующем:
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>';
}
Вы можете использовать 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: Опция Reference
Согласитесь с Хью Маном, что перед повторением ссылки лучше проверить этот параметр, но можно установить статическую страницу в качестве главной страницы и оставить страницу постов пустой. В этом случае ссылка будет просто указывать на домашний 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( '/' ) );
}
}
esc_url
вget_permalink
иhome_url
функции