问题描述
我正在开发一个自定义 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 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。