페이지 슬러그를 사용하여 페이지의 페이지 ID를 얻는 방법


35

나는 워드 프레스를 처음 접했을 때 나는 그것을 사용할 수 있을지 궁금 page id했다 slug. 알려주세요.

답변:


47

사용 get_page_by_path($page_path):

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

일반 포스트 객체를 반환합니다.


하위 페이지의 ID 인 경우 어떻게합니까?
freaky

1
@freaky이 함수는 부모 슬러그가 아닌 페이지 슬러그 만 사용합니다. 슬러그는 독특하기 때문에 항상 한 페이지 만 얻을 수 있습니다.
fuxia

3
그것이 작동하고 감사하고 자식 페이지에 대한 조회수처럼 탐색해야했습니다$page = get_page_by_path( 'about/child' );
기묘한

명확히하기 위해 내부가 아닌 필드를 get_page_by_path사용합니다 . post_namepost_slug
colefner

분명히하기 위해 페이지 이름이 아닌 페이지 경로를 사용합니까? 그런 다음 "About us"라는 이름의 페이지는 "about-us"여야합니다. 맞습니까? 시작 또는 후행 슬래시가 없습니까?
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

여기에 지나치게 복잡한 것처럼 보이거나 페이지 ID를 얻는 방법을 설명하지 않는 많은 답변이 있습니다.

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

위의 설명에서 우리는 게시물 객체를 $ page에 할당했습니다-일단 게시물 객체가 있으면 여기에 설명 된 정보를 얻을 수 있습니다 : 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.