วิธีรับ id หน้าของหน้าโดยใช้กระสุนหน้า


35

อิ่มสวยใหม่เพื่อ WordPress และผมสงสัยว่าถ้าฉันจะได้รับกับมันpage id slugเป็นไปได้โปรดแจ้งให้เราทราบ

คำตอบ:


47

การใช้get_page_by_path($page_path):

$page = get_page_by_path( 'about' );
echo get_the_title( $page );

นี่จะส่งคืนออบเจกต์ตามปกติ


จะเป็นอย่างไรถ้าเป็น id หน้าเด็กที่ฉันต้องการ
นอกลู่นอกทาง

1
@freaky ฟังก์ชั่นใช้เวลาเพียงแค่กระสุนหน้าไม่ใช่กระสุนแม่ เนื่องจากทากจะไม่ซ้ำกันคุณจะได้รับเพียงหน้าเดียวเสมอ
fuxia

3
ขอบคุณมันใช้งานได้และสำหรับหน้าเด็กฉันต้องนำทางอย่างผู้ชม$page = get_page_by_path( 'about/child' );
นอกลู่นอกทาง

เพียงชี้แจงget_page_by_pathใช้ข้อมูลภายในไม่ได้post_name post_slug
colefner

เพื่อให้ชัดเจนนี่ใช้พา ธ ของหน้าไม่ใช่ชื่อเพจใช่ไหม จากนั้นหน้าชื่อ "เกี่ยวกับเรา" อาร์กิวเมนต์ควรเป็น "เกี่ยวกับเรา" ถูกต้องหรือไม่ ไม่มีการเริ่มต้นหรือต่อท้ายทับ?
user658182

16

ฉันใช้มัน ..

function get_id_by_slug($page_slug) {
    $page = get_page_by_path($page_slug);
    if ($page) {
        return $page->ID;
    } else {
        return null;
    }
} 

หวังว่านี่จะช่วยใครซักคน


ทำไมห่อไว้ในฟังก์ชั่น? get_page_by_pathส่งคืน null แล้ว…
GDY

เนื่องจากคำถาม OP ต้องการส่งคืน ID ไม่ใช่วัตถุของหน้า
user1158023

9

มันถูกถามและตอบในฟอรัมนี้แล้ว ฉันกำลังวางรหัสเดียวกันจากที่นั่น ใช้ฟังก์ชั่นนี้เพื่อดึง id หน้า

 function get_page_by_slug($page_slug, $output = OBJECT, $post_type = 'page' ) { 
  global $wpdb; 
   $page = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_name = %s AND post_type= %s AND post_status = 'publish'", $page_slug, $post_type ) ); 
     if ( $page ) 
        return get_post($page, $output); 
    return null; 
  }

3

ฉันมีปัญหากับคำตอบที่เลือกเมื่อพยายามใช้รหัสหลายครั้งในหน้าเดียวกัน มันยังคงแสดงเนื้อหาของหน้าทั้งหมดของฉันในเวลาเดียวกันในทุก ๆ ครั้ง ดังนั้นฉันจึงกลับไปคิดและคิดหาวิธีที่ง่ายกว่านี้ตามเอกสารของWordPress Codex :

<?php $query = new WP_Query( array( 'pagename' => 'about-me' ) );
        while ( $query->have_posts() ) {
        $query->the_post();
        echo '<h2>'. get_the_title() .'</h2>';
        the_content();
    }
    wp_reset_postdata();
?>

บางทีมันอาจจะมีประโยชน์สำหรับใครบางคนที่นั่น D


0
<?php  function get_page_ID_by_slug( $slug ) {
    $page = get_page_by_path( $slug );
    if ( $page ) {
        return (int) $page->ID;
    }
    else {
        return null;
    }
}
?>

ฉันหวังว่าคำแนะนำนี้จะเป็นประโยชน์สำหรับใครบางคน


0

คำตอบมากมายที่นี่ซึ่งดูซับซ้อนเกินไปหรือไม่อธิบายวิธีรับรหัสหน้าเว็บโดยเฉพาะ

            $page = get_page_by_path("your-page-slug");
            if ($page) {
                $page_id =  $page->ID;
                echo $page_id;
            }

ในคำอธิบายข้างต้นเราได้กำหนดวัตถุโพสต์ให้กับหน้า $ - เมื่อคุณมีวัตถุที่โพสต์คุณจะได้รับข้อมูลที่อธิบายไว้ที่นี่: https://codex.wordpress.org/Class_Reference/WP_Post

            $page->ID
            $page->post_status
            $page->post_title

และอีกมากมาย

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.