WordPress直接通过数据库来检索title来获取post id(附:post type支持代码)

文 / @WordPress主题

下面是一个可以在WordPress中直接通过数据库来检索文章标题(title)以获取文章ID(post ID)的PHP函数:

php
function get_post_id_by_title( $title ) {
global $wpdb;
$post_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type = 'post' AND post_status = 'publish'", $title ) );
return $post_id;
}

这个函数使用了WordPress的全局变量 $wpdb,它允许我们访问数据库并执行SQL查询。函数的参数 $title 是要搜索的文章标题。

查询语句使用了 $wpdb->prepare() 函数来安全地处理查询中的变量。它会自动为查询中的字符串和数字添加引号和转义符,以避免 SQL 注入攻击。

查询语句在 $wpdb->posts 数据库表中搜索 post_title 字段等于 $title,并且 post_type 是 'post'(文章类型为文章)并且 post_status 是 'publish'(文章状态为已发布)的文章。如果找到匹配的文章,则返回文章的 ID。

你可以将这个函数添加到你的 WordPress 主题或插件中,并在需要时调用它来获取文章 ID。例如:

bash
$post_id = get_post_id_by_title( 'Hello World' );

这将返回标题为 'Hello World' 的文章的 ID。

post type支持代码

如果你需要检索名为“liushui”的自定义 custom post type,而不是默认的 post 类型,可以稍微修改我们之前的函数来适应这种情况。只需将查询语句中的 post_type 字段替换为你的自定义 post type 名称即可。

下面是修改后的函数:

php
function get_custom_post_id_by_title( $title ) {
global $wpdb;
$post_id = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type = 'liushui' AND post_status = 'publish'", $title ) );
return $post_id;
}

这个函数与之前的函数非常相似,唯一的区别是查询语句中的 post_type 字段是 'liushui',这是你的自定义 custom post type 名称。你可以在需要的时候调用这个函数来获取你自定义 post type 的文章 ID。

例如:

bash
$post_id = get_custom_post_id_by_title( 'Hello World' );

这将返回名为“Hello World”的自定义 custom post type 文章的 ID。请注意,这个函数仅适用于已发布的文章。如果文章处于草稿、待审核或已归档状态,它将无法检索到文章。

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。