从帖子标题获取WordPress帖子ID

时间:2009-10-08 09:33:11

标签: php wordpress

我正在开发一个自定义WordPress主题的问题。这有点令人费解,但基本上,我需要做的是通过它的帖子标题获得Post Id。在伪代码中,它理想地类似于:

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

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

提前致谢。

9 个答案:

答案 0 :(得分:86)

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

答案 1 :(得分:19)

如果有其他人在努力解决这个问题,那么找到解决方案。测试/谷歌搜索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

答案 2 :(得分:8)

像Michal Mau所说:

使用

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

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

答案 3 :(得分: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);

答案 4 :(得分:1)

您可以根据[链接] [http://codex.wordpress.org/Function_Reference/get_page_by_title] 1使用以下代码!

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

答案 5 :(得分:0)

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

有一个插件,它只是简单地做,只是在你的所有页面,所有帖子,所有类别表中添加一列,并且列标题为ID ......在下面,你会看到所有的该列中列出的页面/帖子ID ..

我认为这应该非常有用..

我经常使用这个插件,它非常轻巧。

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

答案 6 :(得分:0)

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

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

答案 7 :(得分:0)

使用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;

答案 8 :(得分:0)

1)彼此区别 post_title post_name 。 post_name也许就是slu .. post_title是帖子的标题。

2)

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