问题描述

是否可以抓住自定义帖子类型的帖子 id 只是从 s lug?

我知道我们可以通过使用标题从 id 获得。但是在一个自定义的帖子类型中可以有相同的标题,因为 lug s 是独一无二的可能吗?

最佳解决方案

你可以使用 get_page_by_path() – 不要让名字愚弄你,第三个参数是帖子类型:

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

次佳解决方案

如果您等待几天,并升级到 12 月 8 日发布的 WordPress 4.4(AFAIK),您可以在 WP_Query 中使用新的 post_name__in 参数,该参数需要一系列的 s s

例子

如果您需要完整的 post 对象

$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 );

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。