ページスラッグを使用してページのページIDを取得する方法


35

私はワードプレスにかなり新しいです、私はそれがで得ることができるかどうか疑問に思っpage idていましたslug。可能ですか教えてください。

回答:


47

使用get_page_by_path($page_path)

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

これにより、通常の投稿オブジェクトが返されます。


必要な子ページのIDの場合はどうなりますか?
気紛れ

1
@freakyこの関数は、親スラッグではなく、ページスラッグだけを取ります。ナメクジは一意であるため、常に1ページしか表示されません。
FUXIA

3
それが働いていると子ページのために、私はヒットのようにナビゲートしなければならなかったありがとう$page = get_page_by_path( 'about/child' );
気紛れ

明確にするために、get_page_by_pathではpost_nameなく内部的にフィールドを使用しますpost_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.