Pobierz adres URL strony bloga w Opcjach

38

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?

Atif Mohammed Ameenuddin
źródło

Odpowiedzi:

70

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>
Bill Erickson
źródło
25

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.

SeventhSteel
źródło
4

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>';
}
Hooman Askari
źródło
3

Możesz użyć get_optionz, page_for_postsaby 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

Sagive SEO
źródło
1

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( '/' ) );
    }
}
Dmitrij Mayorov
źródło
Nie trzeba do esc_urltych get_permalinki home_urlfunkcji
Tolea Bivol