Dapatkan konten halaman menggunakan siput

9

Saya mencoba untuk mendapatkan konten halaman ketika saya hanya tahu string siput.

Apakah ada fungsi untuk ini, atau cara mudah untuk melakukan ini atau ini kasus melakukannya melalui SQL?

Terima kasih banyak

Alex
sumber

Jawaban:

30

Gunakan get_posts()dan parameter nameyang merupakan siput:

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

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

Perlu diketahui bahwa jenis posting secara get_posts()default adalah 'post'. Jika Anda ingin menggunakan halaman ...

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

Jika Anda ingin semua jenis posting publik (kecuali lampiran) atur argumen tipe posting 'any'. Maka Anda bisa mendapatkan lebih dari satu hasil karena siput tidak unik di berbagai jenis posting.

fuxia
sumber
4

Anda bisa mendapatkan halaman berdasarkan judulnya menggunakan get_page_by_title()fungsi.

Anda dapat menggunakannya seperti ini (dengan asumsi Anda ingin menampilkan konten):

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

BTW, untuk Mendapatkan halaman menggunakan siput:

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
sumber
4

Jika pada halaman dengan siput yang dimaksud

Baca pada tag kondisional :
is_page()juga menganggap siput sebagai argumen.

Karenanya,

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

akan melakukan apa yang Anda inginkan.

Jika di halaman lain

Jika Anda tertarik tentang cara mengambil konten posting / halaman berdasarkan siput ketika tidak pada halaman tersebut, Anda dapat memberi makan get_postssiput juga. Ini tidak didokumentasikan dalam kodeks.

Yang berikut ini akan mengambil id dari siput:

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

// echo fetched content
echo $posts_from_slug[0]->post_content;
Johannes Pille
sumber
2

Gunakan get_page_by_path.

Sintaksis

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

Parameter

Contoh:

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

untuk referensi lebih lanjut lihat Referensi Fungsi WordPress

Saya menggunakan kode ini saat mengisi templat tema dari suatu halaman,

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