Como obter o tipo de post personalizado id do slug?

17

É possível pegar o ID do post do tipo de post personalizado apenas do slug?

Tanto eu sei que podemos obter do id usando título. Mas pode haver o mesmo título em um tipo de postagem personalizado, assim como as lesmas são únicas, é possível ???

    
por stlawrance 03.12.2015 / 11:00

3 respostas

32

Você pode usar get_page_by_path() - não deixe o nome enganar você, o terceiro argumento é o tipo de postagem:

if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
    $id = $post->ID;
else
    $id = 0;
    
por TheDeadMedic 03.12.2015 / 11:51
6

Se você esperar alguns dias e atualizar para o Wordpress 4.4 , que será lançado no dia 8 de dezembro (< em> AFAIK ), você pode usar o novo parâmetro post_name__in em WP_Query , que recebe uma variedade de slugs

EXEMPLO

Se você precisar do objeto post completo

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

Se você precisa apenas do 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 );
    
por Pieter Goosen 03.12.2015 / 11:59
3

Se você quiser apenas o ID do post, isso fará o truque em uma linha.

url_to_postid( site_url('the_slug') );
    
por Syclone 03.11.2017 / 23:31