Comment obtenir un identifiant de post personnalisé de type post à partir de slug?

17

Est-il possible de saisir l'identifiant de post personnalisé de type post uniquement à partir de slug?

Autant que je sache, id peut être obtenu en utilisant title. Mais il peut y avoir le même titre dans un type de message personnalisé, de sorte que les slugs sont uniques, est-ce possible ???

    
posée stlawrance 03.12.2015 - 11:00

3 réponses

32

Vous pouvez utiliser get_page_by_path() - ne laissez pas le nom vous tromper, le troisième argument est le type de message:

if ( $post = get_page_by_path( 'the_slug', OBJECT, 'post_type' ) )
    $id = $post->ID;
else
    $id = 0;
    
réponse donnée TheDeadMedic 03.12.2015 - 11:51
6

Si vous attendez quelques jours et que vous passez à Wordpress 4.4 , qui paraîtra le 8 décembre (< em> AFAIK ), vous pouvez utiliser le nouveau paramètre post_name__in dans WP_Query qui prend un tableau de slugs

EXEMPLE

Si vous avez besoin de l'objet post complet

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

Si vous n'avez besoin que de l'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 );
    
réponse donnée Pieter Goosen 03.12.2015 - 11:59
3

Si vous voulez juste l’identifiant de la publication, cela fera l’affaire en une ligne.

url_to_postid( site_url('the_slug') );
    
réponse donnée Syclone 03.11.2017 - 23:31

Lire d'autres questions sur les étiquettes