web-dev-qa-db-fra.com

Comment obtenir un type de post personnalisé après un slug?

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

Autant que je sache, on peut obtenir d'id 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 ???

18
stlawrance

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;
38
TheDeadMedic

Si vous attendez quelques jours et passez à Wordpress 4.4 qui sera publié le 8 décembre (AFAIK), vous pouvez utiliser le nouveau paramètre post_name__in dans WP_Query qui prend un tableau des limaces

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 avez seulement besoin 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 );
7
Pieter Goosen

Si vous ne voulez que l'identifiant de la publication, cela fera l'affaire en une ligne.

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