Ustawiłem blog na inną stronę niż strona główna.
Chcę mieć link z single.php do tej strony bloga.
Czy jest jakaś funkcja, która pobiera adres URL bloga?
Ustawiłem blog na inną stronę niż strona główna.
Chcę mieć link z single.php do tej strony bloga.
Czy jest jakaś funkcja, która pobiera adres URL bloga?
Odpowiedzi:
Aby skorzystać z odpowiedzi Sagive, musisz owinąć identyfikator w get_permalink (), aby uzyskać rzeczywisty link.
<a href="<?php echo get_permalink( get_option( 'page_for_posts' ) ); ?>">Our Blog</a>
Począwszy od WordPress 4.5 możesz używać:
get_post_type_archive_link( 'post' );
To obsługuje logikę uzyskania poprawnego adresu URL niezależnie od tego, czy posty pojawiają się na stronie głównej, czy na określonej stronie.
Najlepszym sposobem na sprawdzenie opcji przed ustawieniem bezpośredniego połączenia jest:
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>';
}
Możesz użyć get_option
z, page_for_posts
aby uzyskać identyfikator strony, aby przypisać go do zmiennej lub wywołać echo, jeśli chcesz to zrobić.
<?php $postsPageId = get_option('page_for_posts'); ?>
<a href="index.php?p=<?php echo $postsPageId; ?>">Our Blog</a>
Aby uzyskać dodatkowe informacje na temat wadliwej wizyty get_option: odniesienie do opcji
Zgadzam się z Hugh Manem, że lepiej sprawdzić opcję przed wyświetleniem echa linku, ale możliwe jest ustawienie strony statycznej jako strony początkowej i pozostawienie pustej strony postów. W takim przypadku link będzie po prostu wskazywał domowy adres URL. Lepszym rozwiązaniem jest powrót do strony archiwum postów. Coś takiego:
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
tychget_permalink
ihome_url
funkcji