it-swarm.com.de

Abrufen der Site-URL einschließlich der Front Base

Wenn meine Permalink-Struktur auf /blog/%postname%/ eingestellt ist, wie kann ich eine URL für meine Site abrufen, die domain.com/blog/ abruft?

Mit der oben erwähnten Permalink-Struktur wird bei Verwendung von site_url();domain.com/ angezeigt, wenn ich die URL der Site einschließlich der Front-Base auf einfache Weise abrufen möchte.

Vielleicht ist mir nicht klar, was die "vordere Basis" eigentlich ist.

Ich habe den Eindruck, dass die vordere Basis Ihre "Permalink-Struktur" ist. (In der Option permalink_structure gespeichert)

Ich habe home_url(); und site_url(); ausprobiert ... Beide geben nur domain.com/ aus

Ich denke darüber nach, nur site_url(); zu verwenden, dann die Option permalink_structure abzurufen, den Inhalt der Option selbst zu analysieren und ihn dann an die Funktion site_url(); anzuhängen.

$permalink_structure = get_option('permalink_structure');
$front_base = preg_replace('#(\%)(.*)(\%/)#si', '', $permalink_structure);
echo site_url($front_base, 'http').PHP_EOL;

Gibt es eine einfachere Möglichkeit, die URL der Site einschließlich der Front-Base abzurufen?

7
Michael Ecklund

Sie können den Wert von front im globalen $wp_rewrite abrufen:

global $wp_rewrite;
echo $wp_rewrite->front;
// or
echo home_url( $wp_rewrite->front );

Obwohl dies wahrscheinlich von begrenztem Nutzen ist, da die vordere Basis nicht unbedingt eine vorhandene Seite ist und in vielen Fällen 404 sein kann. Wenn Sie diesen Wert zum Voranstellen vor anderen URLs verwenden, machen Sie es wahrscheinlich falsch.

Wenn Sie die Seite als Beitragsseite festlegen möchten, wird dieser Wert in der Option page_for_posts gespeichert:

echo get_permalink( get_option( 'page_for_posts' ) );
12
Milo

Ich wollte so etwas wie die folgende Funktion vorschlagen, aber seien wir ehrlich @ Milos Antwort ist nur ein bisschen schlauer , also nur aus Gründen der Vollständigkeit und weil ich es bereits aufgeschrieben habe.

function wpse163163_site_url_with_fix_permalink_base() {
    return 
        get_site_url()
        . '/'
        . preg_replace(
            '/\%([a-z0-9]+?)\%/i',
            '',
            str_replace(
                '/',
                '',
                get_option('permalink_structure')
            )
        )
        . '/';
}
4
Nicolai

Du musst einen solchen Link bekommen.

<?php echo home_url( '/blog' ); ?>

oder

<?php echo home_url( '/' ) . 'blog'; ?>
0
Robert hue