슬러그에서 맞춤 게시물 유형 게시물 ID를 얻는 방법은 무엇입니까?


18

슬러그에서만 맞춤 게시물 유형 게시물 ID를 가져올 수 있습니까?

제목을 사용하여 ID에서 얻을 수 있다는 것을 알고 있습니다. 그러나 슬러그가 독창적이므로 맞춤 게시물 유형에 동일한 제목이있을 수 있습니까 ???

답변:


40

당신은 사용할 수 있습니다 get_page_by_path()-이름이 당신을 바보하게하지 마십시오, 세 번째 인수는 게시물 유형입니다 :

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

7

며칠 기다렸다가 12 월 8 일 ( AFAIK )에 릴리스 될 Wordpress 4.4로 업그레이드 하는 경우 슬러그 배열을 취하는 새로운 매개 변수를 사용할 수 있습니다post_name__inWP_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 );

멋지지만 슬러그로 게시물 하나를 얻는 데 약간 집중적입니까? 그들은 왜 그 기능을 추가 했습니까!?
TheDeadMedic

1
@TheDeadMedic 약간 집중적 일 수 있습니다. 실제로 성능을 테스트하지는 않았지만 대체 ;-) 수단으로 추가되었습니다. 왜, 나는 정말로 모른다, 워드 프레스가 그렇게 유명하고 불필요하게 좋은 것들 중 하나처럼 보인다. 이름 지정 규칙, IMHO, 그냥 같은 잘못도 post_name재산 및 category_name했어야 매개 변수, slug하지와name
피터 구센

좋은 :) 와우 실제로 나에게 좋은 업데이트 :)
stlawrance

1
@TheDeadMedic 내 방법과 방법 사이에는 시차가 없습니다. 각 쿼리를 실행하는 데 지속적으로 0.002 ~ 0.005 초가 소요됩니다. 또한 두 방법 모두 하나의 쿼리 만 실행합니다. ;-)
Pieter Goosen

1
@TheDeadMedic 방금 PHP가 할 일이 적다는 것을 의미했습니다. 그렇습니다. 대안을 알고 (언제나 최고가 아닐 수도 있지만 ) 어떤 종류의 벤치 마크를 갖는 것이 항상 좋은 일 입니다. 즐기십시오 ;-)
Pieter Goosen

5

게시물 ID를 원하면 한 줄로 트릭을 수행합니다.

url_to_postid( site_url('the_slug') );

1
이것은 url_to_postid매우 유연한 기능입니다. 모든 종류의 퍼머 링크 / 전체 URL을 전달하고 해당 URL에 대해 가장 정확한 post-ID를 얻을 수 있습니다. 그러나 유연한 사용으로 인해 속도가 느립니다 (예 : 많은 엔드 포인트 / 포스트 유형). 특정 게시물 유형에 대한 슬러그 만 전달하는 경우 사용 속도가 훨씬 빠릅니다.get_page_by_path()
Philipp
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.