从帖子标题获取 WordPress 帖子 ID

Posted

技术标签:

【中文标题】从帖子标题获取 WordPress 帖子 ID【英文标题】:Get WordPress Post ID from Post title 【发布时间】:2010-12-04 22:24:46 【问题描述】:

我正在开发的自定义 WordPress 主题存在问题。这有点令人费解,但本质上,我需要做的是通过它的帖子标题获取一个帖子 ID。在伪代码中,理想情况下是这样的:

title = "foo";
post_id = get_post_id_where_title_is(title);

提到的标题是一个静态引用,不是从 WordPress 中提取的,它已经存在于页面上。

提前致谢。

【问题讨论】:

【参考方案1】:

如果其他人对此感到困惑,请找到解决方案。经过 4 小时的测试/谷歌搜索后,才在绝望中发布了这个问题!

function get_post_by_title($page_title, $output = OBJECT) 
    global $wpdb;
        $post = $wpdb->get_var( $wpdb->prepare( "SELECT ID FROM $wpdb->posts WHERE post_title = %s AND post_type='post'", $page_title ));
        if ( $post )
            return get_post($post, $output);

    return null;

发现于:http://sudarmuthu.com/blog/2009/09/18/retrieving-posts-and-pages-based-on-title-in-wordpress.html

【讨论】:

只需将该函数放在您的functions.php文件中即可。 请注意,如果您想获取页面的 id,您可能希望将 post_type 更改为 'page'。您也可以省略 SQL where 子句中的 post_type 来搜索所有修订版、页面和帖子等。(即所有类型。) 我怀疑这可能会返回草稿/垃圾版本,因为它没有标准 status='published'....【参考方案2】:

对于任何偶然发现此问题的人来说,只是一个简短的提示:get_page_by_title() 现在可以处理任何帖子类型。 WP 3.0 中添加了$post_type 参数。

【讨论】:

+1 总是比使用一些任意的 mysql 查询更好。 函数名有点混乱。【参考方案3】:

获取帖子和页面 ID 的另一种方法是使用插件..

有一个插件,它所做的只是在所有页面、所有帖子、所有类别表中添加一个列,并有一个 ID 列标题...在下方,您将看到所有该列中列出的页面/帖子 ID..

我觉得应该很有用..

我经常使用这个插件,而且非常轻量级。

http://getyourblogready.com/?p=758

【讨论】:

发布代码对我们了解您的提议更有用...【参考方案4】:

无需使用任何类型的 SQL 查询或插件,为此使用 Wordpress 标准函数

$page = get_page_by_title( 'Home' );
$page_id = $page->ID;

【讨论】:

【参考方案5】:

您可以按照 [a link][http://codex.wordpress.org/Function_Reference/get_page_by_title]1 使用以下代码!

<?php 
$page = get_page_by_title( 'About' );
wp_list_pages( 'exclude=' . $page->ID );
?>

【讨论】:

【参考方案6】:

使用 wp 查询很容易从帖子标题中获取帖子 ID:

global $wpdb;

$rw = $wpdb->get_row( $wpdb->prepare("select * from "your post table name" where post_title='your variable name or your post title'"));

echo $rw->ID;

【讨论】:

【参考方案7】:

1) post_titlepost_name 彼此不同。 post_name 也许是蛞蝓。 post_title 是文章的标题。

2)

$titlee = "yourtitle";
echo $id = $wpdb->get_var("SELECT ID FROM $GLOBALS['wpdb']->posts WHERE post_name = $titlee");

【讨论】:

这如何回答这个问题?【参考方案8】:

就像 Michal Mau 提到的:

使用

$my_post = get_page_by_title( 'My Title', OBJECT, 'post' );
echo $my_post->post_content;

( $page_title, $output, $post_type ) 可以轻松接收帖子而不是页面。

【讨论】:

【参考方案9】:

希望这将通过创建函数为您提供更多帮助,以便您无需重复代码

function get_page_id_by_title($title)

$page = get_page_by_title($title);
return $page->ID;


$title = "your title";
get_page_id_by_title($title);

【讨论】:

以上是关于从帖子标题获取 WordPress 帖子 ID的主要内容,如果未能解决你的问题,请参考以下文章

从 WordPress 中的特定类别获取置顶帖子

如何从 wordpress 中的帖子页面 id 获取 acf 的画廊图片 url

从 WordPress 帖子中获取有限的纯文本摘录?

WordPress - 无法从自定义帖子类型中的元框获取价值

Wordpress - 我如何从其他自定义帖子中获取_categories?

如何使用 JQuery.ajax 从每个 WordPress 帖子中获取缩略图附件?