从WordPress文章标题获取文章ID

54

我在开发一个自定义 WordPress 主题时遇到了问题。虽然有点复杂,但本质上,我需要通过文章标题获取文章 ID。在伪代码中,最理想的情况应该是:

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

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

9个回答

99

对于任何偶然看到这篇文章的人,简要说明一下:
get_page_by_title() 现在可以处理任何文章类型了。
在 WP 3.0 中添加了 $post_type 参数。


19
始终使用核心函数比使用任意的MySQL查询更好。 - Tom Auger
4
函数名有点让人困惑。 - msiemens
get_page_by_title现在已经被弃用。 - undefined

19

如果还有其他人遇到这个问题,我找到了解决方法。在经过四个小时的测试/搜索后,只是出于绝望才发布了这个问题!

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 文件中即可。 - Littlejon
2
请注意,如果您想获取页面的ID,则可能希望将post_type更改为“page”。您还可以从SQL where子句中省略post_type以搜索所有修订版本、页面和文章等(换句话说,所有类型)。 - arxpoetica
2
我怀疑这可能会返回草稿/已删除的版本,因为它没有标准status='published' - random_user_name

9
像Michal Mau提到的那样:
使用
$my_post = get_page_by_title( 'My Title', OBJECT, 'post' );
echo $my_post->post_content;

( $page_title, $output, $post_type )能够轻松地接收一个文章而不是一个页面。


get_page_by_title现已弃用 - undefined
@ChrisPink 谢谢。更多信息请参考:https://make.wordpress.org/core/2023/03/06/get_page_by_title-deprecated/ - undefined

2

通过创建函数,您可以避免重复编写代码,并更好地提高效率。

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

get_page_by_title现已弃用 - undefined

0

您可以根据以下代码使用(参见[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 );
?>

0

1) 区分post_titlepost_name。post_name可能是slug。post_title是文章的标题。

2)

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

这个回答如何解决问题? - James A Mohler

-1

不需要使用任何类型的SQL查询或插件,可以使用WordPress标准函数来完成此操作。

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

-1

使用 wp query 很容易从文章标题获取文章 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;

-1

获取文章和页面ID的另一种方法是使用插件。

有一个插件,它的作用很简单,就是在所有页面、所有文章、所有分类表格中添加一个名为ID的列,并在下面列出所有页面/文章ID。

我认为这非常有用。

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

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


发布代码对我们来说更有帮助,可以让我们更好地了解您的建议。 - nickhar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接