web-dev-qa-db-ja.com

Slugからカスタム投稿タイプの投稿IDを取得するにはどうすればいいですか?

Slugからだけカスタム投稿タイプの投稿IDを取得することは可能ですか?

私は、titleを使ってidから取得できることを知っています。しかし、ナメクジがユニークであるようにカスタム投稿タイプに同じタイトルがある可能性がありますか?

18
stlawrance

get_page_by_path() - 名前を惑わさないようにしてください。3番目の引数は投稿タイプです。

if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
    $id = $post->ID;
else
    $id = 0;
38
TheDeadMedic

数日待って、12月8日にリリースされる Wordpress 4.4 にアップグレードする場合( _ afaik _ )、配列を取るpost_name__inの新しいWP_Queryパラメータを使用できます。ナメクジ

完全な投稿オブジェクトが必要な場合

$args = [
    'post_type'      => 'my_custom_post_type',
    'posts_per_page' => 1,
    'post_name__in'  => ['post-slug']
];
$q = get_posts( $args );
var_dump( $q );

あなただけのIDが必要な場合

$args = [
    'post_type'      => 'my_custom_post_type',
    'posts_per_page' => 1,
    'post_name__in'  => ['post-slug'],
    'fields'         => 'ids' 
];
$q = get_posts( $args );
var_dump( $q );
7
Pieter Goosen

あなたが単に投稿IDが欲しいなら、これは一行でトリックをするでしょう。

url_to_postid( site_url('the_slug') );
5
Syclone