从帖子标题获取WordPress帖子ID

Aar*_*ron 47 php wordpress

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

title = "foo";
post_id = get_post_id_where_title_is(title);
Run Code Online (Sandbox Code Playgroud)

提到的标题是一个静态引用,没有从WordPress中提取,它已经出现在页面上.

提前致谢.

小智 90

对于遇到这种情况的任何人来说,只需快速记下:
get_page_by_title()现在可以处理任何帖子类型.
$post_type参数已添加到WP 3.0中.

  • +1总是比使用任意mySQL查询更好地使用核心功能. (18认同)
  • 但是,函数名称令人困惑. (3认同)

Aar*_*ron 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;
}
Run Code Online (Sandbox Code Playgroud)

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

  • 请注意,如果您想获取页面的ID,您可能希望将post_type更改为"page".您还可以省略SQL where子句中的post_type来搜索所有修订,页面和帖子等.(换句话说,所有类型.) (2认同)
  • 我怀疑这可能会返回草稿/删除版本,因为它没有标准`status ='published'` .... (2认同)

小智 8

像Michal Mau一样提到:

使用

$my_post = get_page_by_title( 'My Title', OBJECT, 'post' );
echo $my_post->post_content;
Run Code Online (Sandbox Code Playgroud)

这是( $page_title, $output, $post_type )轻松收到帖子而不是页面.