Holen Sie sich Seiteninhalte mit Slug

9

Ich versuche, Seiteninhalte abzurufen, wenn ich nur die Slug-Zeichenfolge kenne.

Gibt es eine Funktion dafür oder eine einfache Möglichkeit, dies zu tun, oder ist dies ein Fall, bei dem dies über SQL erfolgt?

Vielen Dank

Alex
quelle

Antworten:

30

Verwenden Sie get_posts()und den Parameter, nameder die Schnecke ist:

$page = get_posts( array( 'name' => 'your-slug' ) );

if ( $page )
{
    echo $page[0]->post_content;
}

Beachten Sie, dass der Beitragstyp get_posts()standardmäßig lautet 'post'. Wenn Sie eine Seite möchten, verwenden Sie…

$page = get_posts(
    array(
        'name'      => 'your-slug',
        'post_type' => 'page'
    )
);

Wenn Sie alle öffentlichen Beitragstypen (außer Anhängen) möchten, setzen Sie das Beitragstypargument auf 'any'. Dann könnten Sie mehr als ein Ergebnis erhalten, da Schnecken nicht für verschiedene Beitragstypen eindeutig sind.

Fuxia
quelle
4

Sie können eine Seite anhand des Titels mithilfe der get_page_by_title()Funktion abrufen.

Sie können es folgendermaßen verwenden (vorausgesetzt, Sie möchten den Inhalt anzeigen):

$page = get_page_by_title('Your Title'); 
$content = apply_filters('the_content', $page->post_content);
echo $content;

Übrigens, um Seite mit Slug zu bekommen:

function get_page_id_by_slug($slug){
    global $wpdb;
    $id = $wpdb->get_var("SELECT ID FROM $wpdb->posts WHERE post_name = '".$slug."'AND post_type = 'page'");
    return $id;
}

$page = get_post(get_page_id_by_slug('my-slug'));
Sisir
quelle
4

Wenn auf der Seite mit der fraglichen Schnecke

Informieren Sie sich über bedingte Tags : Nimmt
is_page() auch den Slug als Argument.

Daher,

if( is_page( 'your-slug' ) ) {
     // fetch content
}

wird tun was du willst.

Wenn auf einer anderen Seite

Wenn Sie daran interessiert sind, wie Sie Post- / Seiteninhalte basierend auf einem Slug abrufen können, wenn Sie sich nicht auf dieser Seite befinden, können Sie auch get_postseinen Slug füttern . Dies ist im Kodex nicht dokumentiert.

Im Folgenden wird die ID von einem Slug abgerufen:

$args = array(
    'name' => 'your-slug'
);
$posts_from_slug = get_posts( $args );

// echo fetched content
echo $posts_from_slug[0]->post_content;
Johannes Pille
quelle
1

Verwenden Sie get_page_by_path.

Syntax

<?php get_page_by_path( $page_path, $output, $post_type ); ?>

Parameter

Beispiel:

//Returns the animal with the slug 'cat'
get_page_by_path('cat', OBJECT, 'animal');

Weitere Informationen finden Sie in der WordPress-Funktionsreferenz

Ich verwende diesen Code, wenn ich eine Themenvorlage von einer Seite ausfülle.

        $about = get_page_by_path('about'); 
        $content = apply_filters( 'the_content', $about->post_content ); 
        echo $content;
PlanetHackers
quelle