Wordpress - 如何通过 slug 获取自定义帖子类型?

Posted

技术标签:

【中文标题】Wordpress - 如何通过 slug 获取自定义帖子类型?【英文标题】:Wordpress - How to get custom post type by slug? 【发布时间】:2014-02-08 21:28:55 【问题描述】:

我处于需要获取 WP 帖子(自定义帖子类型)的情况,而我拥有的唯一信息是它的 slug。我不知道它是什么自定义帖子类型,只是它是一个cpt。

这可能吗,如果可以,怎么做?

【问题讨论】:

我已经更新了我的答案。上一个没用。你能告诉我你想知道关于那个帖子的什么吗?例如,标题、内容等。目前,我的代码会告诉你帖子类型和帖子 ID。 【参考方案1】:

如果您确定在 WordPress 主题或插件中定义的所有自定义帖子类型,最好使用像 get_page_by_path() 这样的专用函数。它将阻止用户尝试在查询中注入 SQL。

例如:get_page_by_path( 'slug_of_the_post', OBJECT, [ 'list', 'of', 'possible', 'types' ] );

见code reference of the function。

【讨论】:

【参考方案2】:

我知道这是迟到的反应,但我偶然发现了这一点。小心此类查询,因为当您从 url 中获取 slug 时,它很容易被注入 SQL 漏洞。

【讨论】:

嗨,欢迎来到 ***。请不要发布 cmets 作为答案。参与该网站,很快您将获得足够的声誉来发布 cmets。谢谢。【参考方案3】:
global $wpdb;
$the_slug = 'post-slug-here'; // <-- edit it
$myrows = $wpdb->get_results( "SELECT post_name, post_type, ID FROM wp_posts WHERE post_name = '". $the_slug ."'" );
foreach ( $myrows as $myrow ) 

    echo 'Post Type: ' . $myrow->post_type . ' Post ID: ' . $myrow->ID;

【讨论】:

以上是关于Wordpress - 如何通过 slug 获取自定义帖子类型?的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress:如何在标签页面上获取标签的 slug

WordPress:在自定义帖子类型中获取模块名称的帖子 slug

Wordpress - 通过 slug 获取标签 ID

php Wordpress通过slug获取ID

替换 Wordpress 中的自定义内容类型 slug

用于自定义帖子类型的 Wordpress 多个 slug