问题描述

我正在开发一个自定义 WordPress 主题的问题。这有点复杂,但基本上,我需要做的是通过邮政标题获得一个帖子标识。在 pseudo-code 中,理想情况是:

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

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

提前致谢。

最佳解决方案

任何绊脚石的人都可以快速注意:get_page_by_title()现在可以处理任何帖子类型。 WP 3.0 中添加了 $post_type 参数。

次佳解决方案

找到一个解决方案,如果有任何人努力与此。只有在 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

第三种解决方案

像 Michal Mau 所说:

使用

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

它是 ( $page_title, $output, $post_type )轻松地收到一个帖子而不是一个页面。

第四种方案

这可能会通过创建函数来帮助您,以便您不必重复代码

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

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。